220 lines
6.8 KiB
JSON
220 lines
6.8 KiB
JSON
{
|
|
"_comment": [
|
|
"Copyright 2022 The Dawn Authors",
|
|
"",
|
|
"Licensed under the Apache License, Version 2.0 (the \"License\");",
|
|
"you may not use this file except in compliance with the License.",
|
|
"You may obtain a copy of the License at",
|
|
"",
|
|
" http://www.apache.org/licenses/LICENSE-2.0",
|
|
"",
|
|
"Unless required by applicable law or agreed to in writing, software",
|
|
"distributed under the License is distributed on an \"AS IS\" BASIS,",
|
|
"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.",
|
|
"See the License for the specific language governing permissions and",
|
|
"limitations under the License."
|
|
],
|
|
|
|
"vendors": {
|
|
|
|
"_Example Vendor": {
|
|
"_comment": [
|
|
"Each vendor must have an `id` field, which is it's PCI Vendor ID, and may optionally ",
|
|
"have a `devices` field which defines device -> architecture mappings which will be ",
|
|
"when populating the GPUAdapterInfo. Keys that begin with an `_` (like this one) denote ",
|
|
"commnents, and will be ignored by the parser."
|
|
],
|
|
|
|
"id": "0xDEAD",
|
|
|
|
"devices": [{
|
|
"_comment": [
|
|
"The `devices` is an array of 'Device Sets', each of which contains an `architecture` ",
|
|
"object which defines an architecture name as a key followed by an array of ",
|
|
"PCI device IDs that map to that architecture. The architecture name is what will be ",
|
|
"reported to the GPUAdapterInfo, made lower-case and with spaces converted to hyphens."
|
|
],
|
|
|
|
"architecture": {
|
|
"Alpha": ["0x0A01", "0x0A02"],
|
|
"Beta": ["0x0B01", "0x0B02", "0x0B03"]
|
|
}
|
|
}, {
|
|
"_comment": [
|
|
"A Device Set can also define a binary `mask`, which will be be applied to any device ",
|
|
"ID prior to comparison, making it easier to capture ranges of device IDs. ",
|
|
"Architectures may be duplicated between Device Sets as long as the device ID values ",
|
|
"Don't overlap."
|
|
],
|
|
|
|
"mask": "0xFF00",
|
|
"architecture": {
|
|
"Beta": ["0x1B00"],
|
|
"Gamma": ["0x0C00", "0x1C00"]
|
|
}
|
|
}, {
|
|
"_comment": [
|
|
"Finally, Device Sets may be flagged as `internal`. Architectures defined in an ",
|
|
"internal device set will never be reported in the GPUAdapterInfo, but will generate ",
|
|
"appropriate helper functions in Dawn (such as `IsExampleVendorDelta()`) in order to ",
|
|
"aid in applying workarounds. Device IDs of internal device sets may overlap with ",
|
|
"ones defined in non-internal device sets, but architectures must be unique between ",
|
|
"internal and non-internal device sets.",
|
|
|
|
"Internal architectures facilitate the (hopefully rare) cases where more targeted ",
|
|
"GPU identification is required by Dawn's implementation than is provided by the normal ",
|
|
"architecture groupings. When possible, however, using non-internal architectures ",
|
|
"should be preferred when applying workarounds."
|
|
],
|
|
|
|
"internal": true,
|
|
"mask": "0xFFF0",
|
|
"architecture": {
|
|
"Beta Rev 3": ["0x1B30"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"AMD": {
|
|
"id": "0x1002",
|
|
|
|
"devices": [{
|
|
"mask": "0xFF00",
|
|
"architecture": {
|
|
"GCN 2": ["0x1300"],
|
|
"GCN 5": ["0x1500", "0x1600"],
|
|
"RDNA 2": ["0x7400"]
|
|
}
|
|
}, {
|
|
"mask": "0xFFF0",
|
|
"architecture": {
|
|
"GCN 1": ["0x6600", "0x6610", "0x6660", "0x6790", "0x6800", "0x6810", "0x6820", "0x6830"],
|
|
"GCN 2": ["0x6640", "0x6650", "0x67A0", "0x67B0", "0x9830", "0x9850"],
|
|
"GCN 3": ["0x6900", "0x6920", "0x6930", "0x7300", "0x9870", "0x98E0"],
|
|
"GCN 4": ["0x67C0", "0x67D0", "0x67E0", "0x67F0", "0x6980", "0x6990"],
|
|
"GCN 5": ["0x66A0", "0x6860", "0x6870", "0x6940", "0x69A0"],
|
|
"RDNA 1": ["0x7310", "0x7340", "0x7360"],
|
|
"RDNA 2": ["0x73A0", "0x73B0", "0x73D0", "0x73E0", "0x73F0"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Apple": {
|
|
"id": "0x106b",
|
|
|
|
"_comment": [
|
|
"Apple GPUs do not report a DeviceID via the Metal API, and as such the typical device",
|
|
"pattern matching does not work for them. The recommended approach is to find the highest",
|
|
"supported 'common' family supported and report it as the architecture.",
|
|
"Examples: 'common-1', 'common-3'",
|
|
"https://developer.apple.com/documentation/metal/gpu_devices_and_work_submission/detecting_gpu_features_and_metal_software_versions"
|
|
]
|
|
},
|
|
|
|
"ARM": {
|
|
"id": "0x13B5",
|
|
|
|
"devices": [{
|
|
"mask": "0xF0000000",
|
|
"architecture": {
|
|
"_comment": [
|
|
"The Midgard GPUs have device IDs like 0x07______ and 0x08______, but it's easiest to",
|
|
"mask those values out and simply check for the highest octet being zero, since that",
|
|
"distinguishes it from the other architectures."
|
|
],
|
|
|
|
"Midgard": ["0x00000000"],
|
|
"Bifrost": ["0x60000000", "0x70000000"],
|
|
"Valhall": ["0x90000000", "0xA0000000"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Google": {
|
|
"id": "0x1AE0",
|
|
|
|
"devices": [{
|
|
"architecture": {
|
|
"Swiftshader": ["0xC0DE"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Img Tec": {
|
|
"id": "0x1010"
|
|
},
|
|
|
|
"Intel": {
|
|
"id": "0x8086",
|
|
|
|
"devices": [{
|
|
"mask": "0xFF00",
|
|
"architecture": {
|
|
"Gen 7": ["0x0100", "0x0400", "0x0A00", "0x0D00", "0x0F00"],
|
|
"Gen 8": ["0x1600", "0x2200"],
|
|
"Gen 9": ["0x1900", "0x3100", "0x3E00", "0x5A00", "0x5900", "0x9B00"],
|
|
"Gen 11": ["0x8A00"],
|
|
"Gen 12 LP": ["0x4600", "0x4C00", "0x4900", "0x9A00", "0xA700"],
|
|
"Gen 12 HP": ["0x4F00", "0x5600"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Mesa": {
|
|
"id": "0x10005"
|
|
},
|
|
|
|
"Microsoft": {
|
|
"id": "0x1414",
|
|
|
|
"devices": [{
|
|
"architecture": {
|
|
"WARP": ["0x8c"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Nvidia": {
|
|
"id": "0x10DE",
|
|
|
|
"devices": [{
|
|
"mask": "0xFF00",
|
|
"architecture": {
|
|
"Fermi": ["0x0D00"],
|
|
"Kepler": ["0x0F00", "0x1000", "0x1100", "0x1200"],
|
|
"Maxwell": ["0x1300", "0x1400", "0x1600", "0x1700"],
|
|
"Pascal": ["0x1500", "0x1B00", "0x1C00", "0x1D00"],
|
|
"Turing": ["0x1E00", "0x1F00", "0x2100"],
|
|
"Ampere": ["0x2200", "0x2400", "0x2500"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Qualcomm": {
|
|
"id": "0x5143",
|
|
|
|
"devices": [{
|
|
"mask": "0xFF000000",
|
|
"architecture": {
|
|
"Adreno 4xx": ["0x04000000"],
|
|
"Adreno 5xx": ["0x05000000"],
|
|
"Adreno 6xx": ["0x06000000"],
|
|
"Adreno 7xx": ["0x07000000"]
|
|
}
|
|
}]
|
|
},
|
|
|
|
"Samsung": {
|
|
"id": "0x144d",
|
|
|
|
"devices": [{
|
|
"architecture": {
|
|
"RDNA 2": ["0x73A0"]
|
|
}
|
|
}]
|
|
}
|
|
|
|
}
|
|
|
|
}
|