1 /* 2 * Copyright (c) 2007, 2016, 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 // All Intel Chips. 55 { 0x8086, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 56 57 // ATI Mobility Radeon X1600, X1400, X1450, X1300, X1350 58 // Reason: workaround for 6613066, 6687166 59 // X1300 (four sub ids) 60 { 0x1002, 0x714A, D_VERSION(6,14,10,6706), OS_WINXP }, 61 { 0x1002, 0x714A, D_VERSION(7,14,10,0567), OS_VISTA }, 62 { 0x1002, 0x7149, D_VERSION(6,14,10,6706), OS_WINXP }, 63 { 0x1002, 0x7149, D_VERSION(7,14,10,0567), OS_VISTA }, 64 { 0x1002, 0x714B, D_VERSION(6,14,10,6706), OS_WINXP }, 65 { 0x1002, 0x714B, D_VERSION(7,14,10,0567), OS_VISTA }, 66 { 0x1002, 0x714C, D_VERSION(6,14,10,6706), OS_WINXP }, 67 { 0x1002, 0x714C, D_VERSION(7,14,10,0567), OS_VISTA }, 68 // X1350 (three sub ids) 69 { 0x1002, 0x718B, D_VERSION(6,14,10,6706), OS_WINXP }, 70 { 0x1002, 0x718B, D_VERSION(7,14,10,0567), OS_VISTA }, 71 { 0x1002, 0x718C, D_VERSION(6,14,10,6706), OS_WINXP }, 72 { 0x1002, 0x718C, D_VERSION(7,14,10,0567), OS_VISTA }, 73 { 0x1002, 0x7196, D_VERSION(6,14,10,6706), OS_WINXP }, 74 { 0x1002, 0x7196, D_VERSION(7,14,10,0567), OS_VISTA }, 75 // X1400 76 { 0x1002, 0x7145, D_VERSION(6,14,10,6706), OS_WINXP }, 77 { 0x1002, 0x7145, D_VERSION(7,14,10,0567), OS_VISTA }, 78 // X1450 (two sub ids) 79 { 0x1002, 0x7186, D_VERSION(6,14,10,6706), OS_WINXP }, 80 { 0x1002, 0x7186, D_VERSION(7,14,10,0567), OS_VISTA }, 81 { 0x1002, 0x718D, D_VERSION(6,14,10,6706), OS_WINXP }, 82 { 0x1002, 0x718D, D_VERSION(7,14,10,0567), OS_VISTA }, 83 // X1600 84 { 0x1002, 0x71C5, D_VERSION(6,14,10,6706), OS_WINXP }, 85 { 0x1002, 0x71C5, D_VERSION(7,14,10,0567), OS_VISTA }, 86 87 // ATI Mobility Radeon 9700 88 // Reason: workaround for 6773336 89 { 0x1002, 0x4E50, D_VERSION(6,14,10,6561), OS_WINXP }, 90 91 // Nvidia FX 5200 92 // Reason: workaround for 6717988 93 { 0x10DE, 0x0322, D_VERSION(6,14,11,6921), OS_WINXP }, 94 95 // Nvidia FX Go5600, Go5700 96 // Reason: workaround for 6714579 97 { 0x10DE, 0x031A, D_VERSION(6,14,11,6921), OS_WINXP }, 98 { 0x10DE, 0x0347, D_VERSION(6,14,11,6921), OS_WINXP }, 99 100 // Nvidia Quadro NVS 110M 101 // Reason: workaround for 6629891 102 { 0x10DE, 0x01D7, D_VERSION(6,14,11,5665), OS_WINXP }, 103 104 // Nvidia Quadro PCI-E series 105 // Reason: workaround for 6653860 106 { 0x10DE, 0x00FD, D_VERSION(6,14,10,6573), OS_WINXP }, 107 108 // Nvidia Quadro FX family 109 // Reason: workaround for 6772137 110 { 0x10DE, 0x00F8, D_VERSION(6,14,10,9381), OS_WINXP }, 111 { 0x10DE, 0x009D, D_VERSION(6,14,10,9381), OS_WINXP }, 112 { 0x10DE, 0x029C, D_VERSION(6,14,10,9381), OS_WINXP }, 113 { 0x10DE, 0x029D, D_VERSION(6,14,10,9381), OS_WINXP }, 114 { 0x10DE, 0x029E, D_VERSION(6,14,10,9381), OS_WINXP }, 115 { 0x10DE, 0x029F, D_VERSION(6,14,10,9381), OS_WINXP }, 116 { 0x10DE, 0x01DE, D_VERSION(6,14,10,9381), OS_WINXP }, 117 { 0x10DE, 0x039E, D_VERSION(6,14,10,9381), OS_WINXP }, 118 { 0x10DE, 0x019D, D_VERSION(6,14,10,9381), OS_WINXP }, 119 { 0x10DE, 0x019E, D_VERSION(6,14,10,9381), OS_WINXP }, 120 { 0x10DE, 0x040A, D_VERSION(6,14,10,9381), OS_WINXP }, 121 { 0x10DE, 0x040E, D_VERSION(6,14,10,9381), OS_WINXP }, 122 { 0x10DE, 0x040F, D_VERSION(6,14,10,9381), OS_WINXP }, 123 { 0x10DE, 0x061A, D_VERSION(6,14,10,9381), OS_WINXP }, 124 { 0x10DE, 0x06F9, D_VERSION(6,14,10,9381), OS_WINXP }, 125 { 0x10DE, 0x05FD, D_VERSION(6,14,10,9381), OS_WINXP }, 126 { 0x10DE, 0x05FE, D_VERSION(6,14,10,9381), OS_WINXP }, 127 { 0x10DE, 0x004E, D_VERSION(6,14,10,9381), OS_WINXP }, 128 { 0x10DE, 0x00CD, D_VERSION(6,14,10,9381), OS_WINXP }, 129 { 0x10DE, 0x00CE, D_VERSION(6,14,10,9381), OS_WINXP }, 130 { 0x10DE, 0x014C, D_VERSION(6,14,10,9381), OS_WINXP }, 131 { 0x10DE, 0x014D, D_VERSION(6,14,10,9381), OS_WINXP }, 132 { 0x10DE, 0x014E, D_VERSION(6,14,10,9381), OS_WINXP }, 133 134 // Nvidia GeForce 6200 TurboCache(TM) 135 // Reason: workaround for 6588384 136 { 0x10DE, 0x0161, NO_VERSION, OS_VISTA }, 137 138 // any Matrox board 139 // Reason: there are no known Matrox boards with proper Direct3D support 140 { 0x102B, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 141 142 // any SiS board 143 // Reason: there aren't many PS2.0-capable SiS boards and they weren't 144 // tested 145 { 0x1039, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 146 147 // any S3 board 148 // Reason: no available S3 Chrome (the only S3 boards with PS2.0 support) 149 // for testing 150 { 0x5333, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 151 152 // any S3 board (in VIA motherboards) 153 // Reason: These are S3 chips in VIA motherboards 154 { 0x1106, ALL_DEVICEIDS, NO_VERSION, OS_ALL }, 155 156 // last record must be empty 157 { 0x0000, 0x0000, NO_VERSION, OS_ALL } 158 }; 159 160 #endif // D3DBADHARDWARE_H