1 /* 2 * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #ifndef D3DBADHARDWARE_H 27 #define D3DBADHARDWARE_H 28 29 #include "D3DPipeline.h" 30 #include "D3DPipelineManager.h" 31 32 typedef struct ADAPTER_INFO { 33 DWORD VendorId; 34 DWORD DeviceId; 35 LONGLONG DriverVersion; // minimum driver version to pass, or NO_VERSION 36 USHORT OsInfo; // OSes where the DriverVersion is relevant or, OS_ALL 37 } ADAPTER_INFO; 38 39 // this DeviceId means that all vendor boards are to be excluded 40 #define ALL_DEVICEIDS (0xffffffff) 41 42 #define D_VERSION(H1, H2, L1, L2) \ 43 (((LONGLONG)((H1 << 16) | H2) << 32) | ((L1 << 16) | (L2))) 44 45 // this driver version is used to pass the driver version check 46 // as it is always greater than any driver version 47 #define MAX_VERSION D_VERSION(0x7fff, 0x7fff, 0x7fff, 0x7fff) 48 // this DriverVersion means that the version of the driver doesn't matter, 49 // all versions must fail ("there's no version of the driver that passes") 50 #define NO_VERSION D_VERSION(0xffff, 0xffff, 0xffff, 0xffff) 51 52 static const ADAPTER_INFO badHardware[] = { 53 54 // Intel HD 55 // Reason: workaround for RT-11540 56 // Clarkdale (Desktop) GMA HD Lines 57 { 0x8086, 0x0042, D_VERSION(6,14,10,5337), OS_WINXP }, 58 { 0x8086, 0x0042, D_VERSION(8,15,10,2302), OS_VISTA }, 59 // Arrandale (Mobile) GMA HD Lines 60 { 0x8086, 0x0046, D_VERSION(6,14,10,5337), OS_WINXP }, 61 { 0x8086, 0x0046, D_VERSION(8,15,10,2302), OS_VISTA }, 62 // Sandy Bridge GMA HD Lines 63 { 0x8086, 0x0102, D_VERSION(6,14,10,5337), OS_WINXP }, 64 { 0x8086, 0x0102, D_VERSION(8,15,10,2302), OS_VISTA }, 65 { 0x8086, 0x0106, D_VERSION(6,14,10,5337), OS_WINXP }, 66 { 0x8086, 0x0106, D_VERSION(8,15,10,2302), OS_VISTA }, 67 { 0x8086, 0x0112, D_VERSION(6,14,10,5337), OS_WINXP }, 68 { 0x8086, 0x0112, D_VERSION(8,15,10,2302), OS_VISTA }, 69 { 0x8086, 0x0116, D_VERSION(6,14,10,5337), OS_WINXP }, 70 { 0x8086, 0x0116, D_VERSION(8,15,10,2302), OS_VISTA }, 71 { 0x8086, 0x0122, D_VERSION(6,14,10,5337), OS_WINXP }, 72 { 0x8086, 0x0122, D_VERSION(8,15,10,2302), OS_VISTA }, 73 { 0x8086, 0x0126, D_VERSION(6,14,10,5337), OS_WINXP }, 74 { 0x8086, 0x0126, D_VERSION(8,15,10,2302), OS_VISTA }, 75 { 0x8086, 0x010A, D_VERSION(6,14,10,5337), OS_WINXP }, 76 { 0x8086, 0x010A, D_VERSION(8,15,10,2302), OS_VISTA }, 77 78 // Mobile Intel 4 Series Express Chipset Family 79 // Reason: workaround for RT-11540 80 // Eaglelake (Desktop) GMA 4500 Lines 81 { 0x8086, 0x2E42, D_VERSION(6,14,10,5303), OS_WINXP }, 82 { 0x8086, 0x2E42, D_VERSION(8,15,10,2302), OS_VISTA }, 83 { 0x8086, 0x2E43, D_VERSION(6,14,10,5303), OS_WINXP }, 84 { 0x8086, 0x2E43, D_VERSION(8,15,10,2302), OS_VISTA }, 85 { 0x8086, 0x2E92, D_VERSION(6,14,10,5303), OS_WINXP }, 86 { 0x8086, 0x2E92, D_VERSION(8,15,10,2302), OS_VISTA }, 87 { 0x8086, 0x2E93, D_VERSION(6,14,10,5303), OS_WINXP }, 88 { 0x8086, 0x2E93, D_VERSION(8,15,10,2302), OS_VISTA }, 89 { 0x8086, 0x2E12, D_VERSION(6,14,10,5303), OS_WINXP }, 90 { 0x8086, 0x2E12, D_VERSION(8,15,10,2302), OS_VISTA }, 91 { 0x8086, 0x2E13, D_VERSION(6,14,10,5303), OS_WINXP }, 92 { 0x8086, 0x2E13, D_VERSION(8,15,10,2302), OS_VISTA }, 93 // Eaglelake (Desktop) GMA X4500 Lines 94 { 0x8086, 0x2E32, D_VERSION(6,14,10,5303), OS_WINXP }, 95 { 0x8086, 0x2E32, D_VERSION(8,15,10,2302), OS_VISTA }, 96 { 0x8086, 0x2E33, D_VERSION(6,14,10,5303), OS_WINXP }, 97 { 0x8086, 0x2E33, D_VERSION(8,15,10,2302), OS_VISTA }, 98 { 0x8086, 0x2E22, D_VERSION(6,14,10,5303), OS_WINXP }, 99 { 0x8086, 0x2E22, D_VERSION(8,15,10,2302), OS_VISTA }, 100 // Eaglelake (Desktop) GMA X4500HD Lines 101 { 0x8086, 0x2E23, D_VERSION(6,14,10,5303), OS_WINXP }, 102 { 0x8086, 0x2E23, D_VERSION(8,15,10,2302), OS_VISTA }, 103 // Cantiga (Mobile) GMA 4500MHD Lines 104 { 0x8086, 0x2A42, D_VERSION(6,14,10,5303), OS_WINXP }, 105 { 0x8086, 0x2A42, D_VERSION(8,15,10,2302), OS_VISTA }, 106 { 0x8086, 0x2A43, D_VERSION(6,14,10,5303), OS_WINXP }, 107 { 0x8086, 0x2A43, D_VERSION(8,15,10,2302), OS_VISTA }, 108 109 // Intel 9XX Chipset families that are used in GMA 3XXX series 110 // Reason: RT-31537 - unusable 111 { 0x8086, 0x2972, NO_VERSION, OS_ALL }, 112 { 0x8086, 0x2973, NO_VERSION, OS_ALL }, 113 { 0x8086, 0x2982, NO_VERSION, OS_ALL }, 114 { 0x8086, 0x2983, NO_VERSION, OS_ALL }, 115 { 0x8086, 0x2992, NO_VERSION, OS_ALL }, 116 { 0x8086, 0x2993, NO_VERSION, OS_ALL }, 117 { 0x8086, 0x29A2, NO_VERSION, OS_ALL }, 118 { 0x8086, 0x29A3, NO_VERSION, OS_ALL }, 119 { 0x8086, 0x2A02, NO_VERSION, OS_ALL }, 120 { 0x8086, 0x2A03, NO_VERSION, OS_ALL }, 121 { 0x8086, 0x2A12, NO_VERSION, OS_ALL }, 122 { 0x8086, 0x2A13, NO_VERSION, OS_ALL }, 123 124 // ATI Radeon X1000 series 125 // Reason: RT-33212 - This series of low to medium range cards 126 // are too old to be usable for JavaFX 127 { 0x1002, 0x7140, NO_VERSION, OS_ALL}, 128 { 0x1002, 0x7142, NO_VERSION, OS_ALL}, 129 { 0x1002, 0x7143, NO_VERSION, OS_ALL}, 130 { 0x1002, 0x7145, NO_VERSION, OS_ALL}, 131 { 0x1002, 0x7146, NO_VERSION, OS_ALL}, 132 { 0x1002, 0x7147, NO_VERSION, OS_ALL}, 133 { 0x1002, 0x7149, NO_VERSION, OS_ALL}, 134 { 0x1002, 0x714A, NO_VERSION, OS_ALL}, 135 { 0x1002, 0x714B, NO_VERSION, OS_ALL}, 136 { 0x1002, 0x714C, NO_VERSION, OS_ALL}, 137 { 0x1002, 0x714D, NO_VERSION, OS_ALL}, 138 { 0x1002, 0x714E, NO_VERSION, OS_ALL}, 139 { 0x1002, 0x715E, NO_VERSION, OS_ALL}, 140 { 0x1002, 0x715F, NO_VERSION, OS_ALL}, 141 { 0x1002, 0x7160, NO_VERSION, OS_ALL}, 142 { 0x1002, 0x7162, NO_VERSION, OS_ALL}, 143 { 0x1002, 0x7163, NO_VERSION, OS_ALL}, 144 { 0x1002, 0x7166, NO_VERSION, OS_ALL}, 145 { 0x1002, 0x7167, NO_VERSION, OS_ALL}, 146 { 0x1002, 0x716D, NO_VERSION, OS_ALL}, 147 { 0x1002, 0x716E, NO_VERSION, OS_ALL}, 148 { 0x1002, 0x717E, NO_VERSION, OS_ALL}, 149 { 0x1002, 0x717F, NO_VERSION, OS_ALL}, 150 { 0x1002, 0x7180, NO_VERSION, OS_ALL}, 151 { 0x1002, 0x7181, NO_VERSION, OS_ALL}, 152 { 0x1002, 0x7183, NO_VERSION, OS_ALL}, 153 { 0x1002, 0x7186, NO_VERSION, OS_ALL}, 154 { 0x1002, 0x7187, NO_VERSION, OS_ALL}, 155 { 0x1002, 0x718B, NO_VERSION, OS_ALL}, 156 { 0x1002, 0x718C, NO_VERSION, OS_ALL}, 157 { 0x1002, 0x718D, NO_VERSION, OS_ALL}, 158 { 0x1002, 0x718F, NO_VERSION, OS_ALL}, 159 { 0x1002, 0x7193, NO_VERSION, OS_ALL}, 160 { 0x1002, 0x7196, NO_VERSION, OS_ALL}, 161 { 0x1002, 0x719F, NO_VERSION, OS_ALL}, 162 { 0x1002, 0x71A0, NO_VERSION, OS_ALL}, 163 { 0x1002, 0x71A1, NO_VERSION, OS_ALL}, 164 { 0x1002, 0x71A3, NO_VERSION, OS_ALL}, 165 { 0x1002, 0x71A7, NO_VERSION, OS_ALL}, 166 { 0x1002, 0x71AF, NO_VERSION, OS_ALL}, 167 { 0x1002, 0x71B3, NO_VERSION, OS_ALL}, 168 { 0x1002, 0x71C0, NO_VERSION, OS_ALL}, 169 { 0x1002, 0x71C1, NO_VERSION, OS_ALL}, 170 { 0x1002, 0x71C2, NO_VERSION, OS_ALL}, 171 { 0x1002, 0x71C3, NO_VERSION, OS_ALL}, 172 { 0x1002, 0x71C5, NO_VERSION, OS_ALL}, 173 { 0x1002, 0x71C6, NO_VERSION, OS_ALL}, 174 { 0x1002, 0x71C7, NO_VERSION, OS_ALL}, 175 { 0x1002, 0x71CD, NO_VERSION, OS_ALL}, 176 { 0x1002, 0x71CE, NO_VERSION, OS_ALL}, 177 { 0x1002, 0x71E0, NO_VERSION, OS_ALL}, 178 { 0x1002, 0x71E2, NO_VERSION, OS_ALL}, 179 { 0x1002, 0x71E3, NO_VERSION, OS_ALL}, 180 { 0x1002, 0x71E6, NO_VERSION, OS_ALL}, 181 { 0x1002, 0x71E7, NO_VERSION, OS_ALL}, 182 { 0x1002, 0x71ED, NO_VERSION, OS_ALL}, 183 { 0x1002, 0x71EE, NO_VERSION, OS_ALL}, 184 { 0x1002, 0x7291, NO_VERSION, OS_ALL}, 185 { 0x1002, 0x7293, NO_VERSION, OS_ALL}, 186 { 0x1002, 0x72B1, NO_VERSION, OS_ALL}, 187 { 0x1002, 0x72B3, NO_VERSION, OS_ALL}, 188 { 0x1002, 0x791E, NO_VERSION, OS_ALL}, 189 { 0x1002, 0x791F, NO_VERSION, OS_ALL}, 190 191 // ATI Mobility Radeon 9700 192 // Reason: workaround for 6773336 193 { 0x1002, 0x4E50, D_VERSION(6,14,10,6561), OS_WINXP }, 194 195 // ATI MOBILITY FireGL V5250 196 // Though this card supports PS 3.0, 197 // it is a relatively old GPU (introduced in 2007) 198 // Reason: workaround for RT-14870, 15045 199 { 0x1002, 0x71D4, NO_VERSION, OS_ALL}, 200 201 // Nvidia FX 5200 202 // Reason: workaround for 6717988 203 { 0x10DE, 0x0322, D_VERSION(6,14,11,6921), OS_WINXP }, 204 205 // Nvidia FX Go5600, Go5700 206 // Reason: workaround for 6714579 207 { 0x10DE, 0x031A, D_VERSION(6,14,11,6921), OS_WINXP }, 208 { 0x10DE, 0x0347, D_VERSION(6,14,11,6921), OS_WINXP }, 209 210 // Nvidia Quadro NVS 110M 211 // Reason: workaround for 6629891 212 { 0x10DE, 0x01D7, D_VERSION(6,14,11,5665), OS_WINXP }, 213 214 // Nvidia Quadro PCI-E series 215 // Reason: workaround for 6653860 216 { 0x10DE, 0x00FD, D_VERSION(6,14,10,6573), OS_WINXP }, 217 218 // Nvidia Quadro FX family 219 // Reason: workaround for 6772137 220 { 0x10DE, 0x00F8, D_VERSION(6,14,10,9381), OS_WINXP }, 221 { 0x10DE, 0x009D, D_VERSION(6,14,10,9381), OS_WINXP }, 222 { 0x10DE, 0x029C, D_VERSION(6,14,10,9381), OS_WINXP }, 223 { 0x10DE, 0x029D, D_VERSION(6,14,10,9381), OS_WINXP }, 224 { 0x10DE, 0x029E, D_VERSION(6,14,10,9381), OS_WINXP }, 225 { 0x10DE, 0x029F, D_VERSION(6,14,10,9381), OS_WINXP }, 226 { 0x10DE, 0x01DE, D_VERSION(6,14,10,9381), OS_WINXP }, 227 { 0x10DE, 0x039E, D_VERSION(6,14,10,9381), OS_WINXP }, 228 { 0x10DE, 0x019D, D_VERSION(6,14,10,9381), OS_WINXP }, 229 { 0x10DE, 0x019E, D_VERSION(6,14,10,9381), OS_WINXP }, 230 { 0x10DE, 0x040A, D_VERSION(6,14,10,9381), OS_WINXP }, 231 { 0x10DE, 0x040E, D_VERSION(6,14,10,9381), OS_WINXP }, 232 { 0x10DE, 0x040F, D_VERSION(6,14,10,9381), OS_WINXP }, 233 { 0x10DE, 0x061A, D_VERSION(6,14,10,9381), OS_WINXP }, 234 { 0x10DE, 0x06F9, D_VERSION(6,14,10,9381), OS_WINXP }, 235 { 0x10DE, 0x05FD, D_VERSION(6,14,10,9381), OS_WINXP }, 236 { 0x10DE, 0x05FE, D_VERSION(6,14,10,9381), OS_WINXP }, 237 { 0x10DE, 0x004E, D_VERSION(6,14,10,9381), OS_WINXP }, 238 { 0x10DE, 0x00CD, D_VERSION(6,14,10,9381), OS_WINXP }, 239 { 0x10DE, 0x00CE, D_VERSION(6,14,10,9381), OS_WINXP }, 240 { 0x10DE, 0x014C, D_VERSION(6,14,10,9381), OS_WINXP }, 241 { 0x10DE, 0x014D, D_VERSION(6,14,10,9381), OS_WINXP }, 242 { 0x10DE, 0x014E, D_VERSION(6,14,10,9381), OS_WINXP }, 243 244 // Nvidia GeForce 6200 TurboCache(TM) 245 // Reason: workaround for 6588384 246 { 0x10DE, 0x0161, NO_VERSION, OS_VISTA }, 247 248 // Old low-end Nvidia GeForce 7300 seriers cards 249 // Reason: workaround for RT-15381 250 // Nvidia GeForce 7300 LE 251 { 0x10DE, 0x01D1, NO_VERSION, OS_ALL}, 252 // Nvidia GeForce 7300 SE/7200 GS 253 { 0x10DE, 0x01D3, NO_VERSION, OS_ALL}, 254 // Nvidia GeForce 7300 GO 255 { 0x10DE, 0x01D7, NO_VERSION, OS_ALL}, 256 // Nvidia GeForce 7300 GS 257 { 0x10DE, 0x01DF, NO_VERSION, OS_ALL}, 258 259 // any Matrox board 260 // Reason: there are no known Matrox boards with proper Direct3D support 261 { 0x102B, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 262 263 // any SiS board 264 // Reason: there aren't many PS2.0-capable SiS boards and they weren't 265 // tested 266 { 0x1039, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 267 268 // any S3 board 269 // Reason: no available S3 Chrome (the only S3 boards with PS2.0 support) 270 // for testing 271 { 0x5333, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 272 273 // any S3 board (in VIA motherboards) 274 // Reason: These are S3 chips in VIA motherboards 275 { 0x1106, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 276 277 // last record must be empty 278 { 0x0000, 0x0000, NO_VERSION, OS_ALL } 279 }; 280 281 #endif // D3DBADHARDWARE_H