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