Files
issue-stats/main.py
Hugo Locurcio 811bc5a886 Be more permissive with hardware naming schemes
This should decrease the number of unknown reports, especially with
older issues that don't use the Copy System Information feature
from the Godot editor.
2023-06-29 12:10:15 +02:00

901 lines
52 KiB
Python
Executable File

#!/usr/bin/env python3
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport
from dotenv import load_dotenv
import os
def main() -> None:
load_dotenv()
transport = AIOHTTPTransport(
url="https://api.github.com/graphql",
headers={
"Authorization": f"Bearer {os.getenv('GODOT_ISSUES_STATS_GITHUB_TOKEN')}"
},
)
client = Client(transport=transport, fetch_schema_from_transport=True)
# TODO: Query more than 100 issues by performing several requests.
query = gql(
"""
query {
repository(owner: "godotengine", name: "godot") {
issues(last: 100) {
edges {
node {
body
author {
login
}
}
}
}
}
}
"""
)
result = client.execute(query)
# Array of dictionaries with user and system information string.
user_system_infos = []
# Counters for all statistics (values are a set of usernames).
# A set is used, so that each user may only increment a given counter once.
# A single user may increment multiple counters in the same category,
# as they may report issues with different hardware or operating systems.
statistics = {
"os": {
"windows": {
"11": set(),
"10": set(),
"8.1": set(),
"8": set(),
"7": set(),
"unknown": set(),
},
"linux": {
"ubuntu": set(),
"fedora": set(),
"debian": set(),
"mint": set(),
"arch": set(),
"unknown": set(),
},
"macos": {
"14": set(),
"13": set(),
"12": set(),
"11": set(),
"10.15": set(),
"10.14": set(),
"10.13": set(),
"10.12": set(),
"unknown": set(),
},
"android": {
"14": set(),
"13": set(),
"12": set(),
"11": set(),
"10": set(),
"9": set(),
"8": set(),
"7": set(),
"6": set(),
"5": set(),
"unknown": set(),
},
"ios": {
"17": set(),
"16": set(),
"15": set(),
"14": set(),
"13": set(),
"12": set(),
"11": set(),
"10": set(),
"unknown": set(),
},
"web": {
"firefox": set(),
"chrome": set(),
"opera": set(),
"edge": set(),
"safari": set(),
"unknown": set(),
},
},
"cpu": {
"amd": {
"zen4": set(),
"zen3": set(),
"zen2": set(),
"zen+": set(),
"zen": set(),
"piledriver": set(),
"bulldozer": set(),
"phenom": set(),
"unknown": set(),
},
"intel": {
"meteor_lake": set(),
"raptor_lake": set(),
"alder_lake": set(),
"rocket_lake": set(),
"ice_lake": set(),
"coffee_lake_refresh": set(),
"coffee_lake": set(),
"kaby_lake": set(),
"skylake": set(),
"haswell": set(),
"ivy_bridge": set(),
"sandy_bridge": set(),
"nehalem": set(),
"core2": set(),
"unknown": set(),
},
},
"cpu_core_count": {
# Number of physical CPU cores.
# On CPUs with hybrid topologies (such as 12th generation Intel and newer),
# this is the sum of P-cores and E-cores.
"1": set(),
"2": set(),
"3": set(),
"4": set(),
"6": set(),
"8": set(),
"10": set(),
"12": set(),
"16": set(),
"24": set(),
"32": set(),
"48": set(),
"64": set(),
"96": set(),
},
"cpu_x86_features": {
# Support for modern x86 CPU features, which binaries can be optimized for.
# Currently, Godot only requires SSE2 (which is the baseline for all x86_64 CPUs).
# The highest supported CPU feature set is stored for each user
# (e.g. support for AVX512 implies support for AVX2, AVX and SSE 4.2).
"avx512": set(),
"avx2": set(),
"avx": set(),
"sse4.2": set(),
},
"cpu_passmark_score": {
# Scores from <https://www.cpubenchmark.net/>.
"single_thread": {
"<1000": set(),
"1000-1500": set(),
"1500-2000": set(),
"2000-2500": set(),
"2500-3000": set(),
"3000-3500": set(),
"3500-4000": set(),
"4000-4500": set(),
">4500": set(),
},
"multi_thread": {
"<5000": set(),
"5000-10000": set(),
"10000-20000": set(),
"20000-30000": set(),
"30000-40000": set(),
"40000-50000": set(),
"50000-60000": set(),
">60000": set(),
},
},
"gpu": {
"amd": {
"dedicated_rdna3": set(),
"dedicated_rdna2": set(),
"dedicated_rdna": set(),
"dedicated_vega": set(),
"dedicated_polaris": set(),
"dedicated_gcn3.0": set(),
"dedicated_gcn2.0": set(),
"dedicated_gcn1.0": set(),
"dedicated_vliw4": set(),
"integrated_rdna3": set(),
"integrated_rdna2": set(),
"integrated_vega": set(),
"unknown": set(),
},
"intel": {
"dedicated_arc_alchemist": set(),
"integrated_meteor_lake": set(),
"integrated_raptor_lake": set(),
"integrated_alder_lake": set(),
"integrated_rocket_lake": set(),
"integrated_ice_lake": set(),
"integrated_coffee_lake_refresh": set(),
"integrated_coffee_lake": set(),
"integrated_kaby_lake": set(),
"integrated_skylake": set(),
"integrated_haswell": set(),
"integrated_ivy_bridge": set(),
"integrated_sandy_bridge": set(),
"unknown": set(),
},
"nvidia": {
"dedicated_ada_lovelace": set(),
"dedicated_ampere": set(),
"dedicated_turing": set(),
"dedicated_pascal": set(),
"dedicated_maxwell": set(),
"dedicated_kepler": set(),
"dedicated_fermi": set(),
"dedicated_tesla": set(),
"unknown": set(),
},
},
"gpu_vram": {
# Only dedicated GPUs increment this statistic.
"less_than_2_gb": set(),
"2_gb": set(),
"3_gb": set(),
"4_gb": set(),
"6_gb": set(),
"8_gb": set(),
"10_gb": set(),
"11_gb": set(),
"12_gb": set(),
"16_gb": set(),
"20_gb": set(),
"24_gb": set(),
"more_than_24_gb": set(),
},
"gpu_passmark_score": {
# Scores from <https://www.videocardbenchmark.net/>.
"<2500": set(),
"2500-5000": set(),
"5000-10000": set(),
"10000-15000": set(),
"15000-20000": set(),
"20000-25000": set(),
"25000-30000": set(),
">30000": set(),
},
"gpu_raytracing": {
# GPUs with hardware-accelerated raytracing (not used in Godot yet).
"dedicated": {
"yes": set(),
"no": set(),
},
"integrated": {
"yes": set(),
"no": set(),
},
},
"gpu_vrs": {
# GPUs with support for variable-rate shading (which Godot 4 supports).
"dedicated": {
"yes": set(),
"no": set(),
},
"integrated": {
"yes": set(),
"no": set(),
},
},
"gpu_mesh_shaders": {
# GPUs with support for mesh shaders (not used in Godot yet).
"dedicated": {
"yes": set(),
"no": set(),
},
"integrated": {
"yes": set(),
"no": set(),
},
},
}
for node in result["repository"]["issues"]["edges"]:
user = node["node"]["author"]["login"]
body = node["node"]["body"]
system_info_index = body.find("### System information\n\n")
issue_description_index = body.find("\n\n### Issue description")
if system_info_index != -1 and issue_description_index != -1:
system_info_index_end = system_info_index + len(
"### System information\n\n"
)
system_information = body[system_info_index_end:issue_description_index]
user_system_infos.append(
{"user": user, "system_information": system_information}
)
# Make the search punctuation-insensitive and case-insensitive.
system_information_trimmed = (
system_information.lower()
.replace(" ", "")
.replace("-", "")
.replace("_", "")
.replace(":", "")
.replace(",", "")
.replace("(r)", "")
.replace("(tm)", "")
)
print(system_information_trimmed)
# Gather statistics for each issue reported.
if "windows11" in system_information_trimmed:
statistics["os"]["windows"]["11"].add(user)
elif "windows10" in system_information_trimmed:
statistics["os"]["windows"]["10"].add(user)
elif "windows8.1" in system_information_trimmed:
statistics["os"]["windows"]["8.1"].add(user)
elif "windows8" in system_information_trimmed:
statistics["os"]["windows"]["8"].add(user)
elif "windows7" in system_information_trimmed:
statistics["os"]["windows"]["7"].add(user)
elif "windows" in system_information_trimmed:
statistics["os"]["windows"]["unknown"].add(user)
if "ubuntu" in system_information_trimmed:
statistics["os"]["linux"]["ubuntu"].add(user)
elif "fedora" in system_information_trimmed:
statistics["os"]["linux"]["fedora"].add(user)
elif "debian" in system_information_trimmed:
statistics["os"]["linux"]["debian"].add(user)
elif "mint" in system_information_trimmed:
statistics["os"]["linux"]["mint"].add(user)
elif "arch" in system_information_trimmed:
statistics["os"]["linux"]["arch"].add(user)
elif "linux" in system_information_trimmed:
statistics["os"]["linux"]["unknown"].add(user)
if (
"macos13" in system_information_trimmed
or "macosventura" in system_information_trimmed
):
statistics["os"]["macos"]["13"].add(user)
elif (
"macos12" in system_information_trimmed
or "macosmonterey" in system_information_trimmed
):
statistics["os"]["macos"]["12"].add(user)
elif (
"macos11" in system_information_trimmed
or "macosbigsur" in system_information_trimmed
):
statistics["os"]["macos"]["11"].add(user)
elif (
"macos10.15" in system_information_trimmed
or "macoscatalina" in system_information_trimmed
):
statistics["os"]["macos"]["10.15"].add(user)
elif (
"macos10.14" in system_information_trimmed
or "macosmojave" in system_information_trimmed
):
statistics["os"]["macos"]["10.14"].add(user)
elif (
"macos10.13" in system_information_trimmed
or "macoshighsierra" in system_information_trimmed
):
statistics["os"]["macos"]["10.13"].add(user)
elif (
"macos10.12" in system_information_trimmed
or "macossierra" in system_information_trimmed
):
statistics["os"]["macos"]["10.12"].add(user)
elif "macos" in system_information_trimmed:
statistics["os"]["macos"]["unknown"].add(user)
if "android13" in system_information_trimmed:
statistics["os"]["android"]["13"].add(user)
elif "android12" in system_information_trimmed:
statistics["os"]["android"]["12"].add(user)
elif "android11" in system_information_trimmed:
statistics["os"]["android"]["11"].add(user)
elif "android10" in system_information_trimmed:
statistics["os"]["android"]["10"].add(user)
elif "android9" in system_information_trimmed:
statistics["os"]["android"]["9"].add(user)
elif "android8" in system_information_trimmed:
statistics["os"]["android"]["8"].add(user)
elif "android7" in system_information_trimmed:
statistics["os"]["android"]["7"].add(user)
elif "android6" in system_information_trimmed:
statistics["os"]["android"]["6"].add(user)
elif "android5" in system_information_trimmed:
statistics["os"]["android"]["5"].add(user)
elif "android" in system_information_trimmed:
statistics["os"]["android"]["unknown"].add(user)
if "ios17" in system_information_trimmed:
statistics["os"]["ios"]["17"].add(user)
elif "ios16" in system_information_trimmed:
statistics["os"]["ios"]["16"].add(user)
elif "ios15" in system_information_trimmed:
statistics["os"]["ios"]["15"].add(user)
elif "ios14" in system_information_trimmed:
statistics["os"]["ios"]["14"].add(user)
elif "ios13" in system_information_trimmed:
statistics["os"]["ios"]["13"].add(user)
elif "ios12" in system_information_trimmed:
statistics["os"]["ios"]["12"].add(user)
elif "ios11" in system_information_trimmed:
statistics["os"]["ios"]["11"].add(user)
elif "ios10" in system_information_trimmed:
statistics["os"]["ios"]["10"].add(user)
elif "ios" in system_information_trimmed:
statistics["os"]["ios"]["unknown"].add(user)
if "firefox" in system_information_trimmed:
statistics["os"]["web"]["firefox"].add(user)
elif "chrome" in system_information_trimmed:
statistics["os"]["web"]["chrome"].add(user)
elif "opera" in system_information_trimmed:
statistics["os"]["web"]["opera"].add(user)
elif "edge" in system_information_trimmed:
statistics["os"]["web"]["edge"].add(user)
elif "safari" in system_information_trimmed:
statistics["os"]["web"]["safari"].add(user)
elif "web" in system_information_trimmed:
statistics["os"]["web"]["unknown"].add(user)
# TODO: Add more Intel CPUs. Tweak detection to also allow "intel<number>" and "core<number>".
if "i76700" in system_information_trimmed:
statistics["cpu"]["intel"]["skylake"].add(user)
statistics["cpu_core_count"]["4"].add(user)
statistics["cpu_x86_features"]["avx2"].add(user)
elif (
"intelcore" in system_information_trimmed
or "inteli" in system_information_trimmed
):
# Second part of the `if` statement is for users who write "Intel i7" instead of "Intel Core i7".
statistics["cpu"]["intel"]["unknown"].add(user)
# TODO: Add more AMD CPUs.
# NOTE: Unlike Intel CPUs, detection does not allow "amd<number>" as this syntax is used for GPUs instead.
# There would be some ambiguities otherwise, such as Ryzen 5 7600 versus Radeon RX 7600.
if (
"ryzen55600x" in system_information_trimmed
or "ryzen5600x" in system_information_trimmed
):
statistics["cpu"]["amd"]["zen3"].add(user)
statistics["cpu_core_count"]["6"].add(user)
statistics["cpu_x86_features"]["avx2"].add(user)
elif (
"ryzen" in system_information_trimmed
or "fx" in system_information_trimmed
):
statistics["cpu"]["amd"]["unknown"].add(user)
if "rtx4090" in system_information_trimmed or "geforce4090" in system_information_trimmed or "nvidia4090" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
statistics["gpu_vram"]["24_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx4080" in system_information_trimmed or "geforce4080" in system_information_trimmed or "nvidia4080" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
statistics["gpu_vram"]["16_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx4070ti" in system_information_trimmed or "geforce4070ti" in system_information_trimmed or "nvidia4070ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx4070" in system_information_trimmed or "geforce4070" in system_information_trimmed or "nvidia4070" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx4060ti" in system_information_trimmed or "geforce4060ti" in system_information_trimmed or "nvidia4060ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
# Assume 8 GB variant, which is much more widespread than the 16 GB one.
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx4060" in system_information_trimmed or "geforce4060" in system_information_trimmed or "nvidia4060" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ada_lovelace"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3090" in system_information_trimmed or "geforce3090" in system_information_trimmed or "nvidia3090" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
statistics["gpu_vram"]["10_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3080ti" in system_information_trimmed or "geforce3080ti" in system_information_trimmed or "nvidia3080ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
statistics["gpu_vram"]["10_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3080" in system_information_trimmed or "geforce3080" in system_information_trimmed or "nvidia3080" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
# Assume 10 GB variant, which is much more widespread than the 12 GB one.
statistics["gpu_vram"]["10_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3070" in system_information_trimmed or "geforce3070" in system_information_trimmed or "nvidia3070" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3060" in system_information_trimmed or "geforce3060" in system_information_trimmed or "nvidia3060" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
# Assume 12 GB variant, which is much more widespread than the 8 GB one.
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx3050" in system_information_trimmed or "geforce3050" in system_information_trimmed or "nvidia3050" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_ampere"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2080ti" in system_information_trimmed or "geforce2080ti" in system_information_trimmed or "nvidia2080ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2080super" in system_information_trimmed or "geforce2080super" in system_information_trimmed or "nvidia2080super" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2080" in system_information_trimmed or "geforce2080" in system_information_trimmed or "nvidia2080" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2070super" in system_information_trimmed or "geforce2070super" in system_information_trimmed or "nvidia2070super" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2070" in system_information_trimmed or "geforce2070" in system_information_trimmed or "nvidia2070" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2060super" in system_information_trimmed or "geforce2060super" in system_information_trimmed or "nvidia2060super" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rtx2060" in system_information_trimmed or "geforce2060" in system_information_trimmed or "nvidia2060" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["11_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1660ti" in system_information_trimmed or "geforce1660ti" in system_information_trimmed or "nvidia1660ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["6_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1660super" in system_information_trimmed or "geforce1660super" in system_information_trimmed or "nvidia1660super" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["6_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1660" in system_information_trimmed or "geforce1660" in system_information_trimmed or "nvidia1660" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["6_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1650super" in system_information_trimmed or "geforce1650super" in system_information_trimmed or "nvidia1650super" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["4_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1650" in system_information_trimmed or "geforce1650" in system_information_trimmed or "nvidia1650" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["4_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1630" in system_information_trimmed or "geforce1630" in system_information_trimmed or "nvidia1630" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_turing"].add(user)
statistics["gpu_vram"]["4_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "gtx1080ti" in system_information_trimmed or "geforce1080ti" in system_information_trimmed or "nvidia1080ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1080" in system_information_trimmed or "geforce1080" in system_information_trimmed or "nvidia1080" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1070ti" in system_information_trimmed or "geforce1070ti" in system_information_trimmed or "nvidia1070ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1070" in system_information_trimmed or "geforce1070" in system_information_trimmed or "nvidia1070" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1060" in system_information_trimmed or "geforce1060" in system_information_trimmed or "nvidia1060" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1050ti" in system_information_trimmed or "geforce1050ti" in system_information_trimmed or "nvidia1050ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx1050" in system_information_trimmed or "geforce1050" in system_information_trimmed or "nvidia1050" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_pascal"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx980ti" in system_information_trimmed or "geforce980ti" in system_information_trimmed or "nvidia980ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx980" in system_information_trimmed or "geforce980" in system_information_trimmed or "nvidia980" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx970" in system_information_trimmed or "geforce970" in system_information_trimmed or "nvidia970" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx960" in system_information_trimmed or "geforce960" in system_information_trimmed or "nvidia960" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx950" in system_information_trimmed or "geforce950" in system_information_trimmed or "nvidia950" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx750ti" in system_information_trimmed or "geforce750ti" in system_information_trimmed or "nvidia750ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx750" in system_information_trimmed or "geforce750" in system_information_trimmed or "nvidia750" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_maxwell"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx690" in system_information_trimmed or "geforce690" in system_information_trimmed or "nvidia690" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx680" in system_information_trimmed or "geforce680" in system_information_trimmed or "nvidia680" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx670" in system_information_trimmed or "geforce670" in system_information_trimmed or "nvidia670" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx660ti" in system_information_trimmed or "geforce660ti" in system_information_trimmed or "nvidia660ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx660" in system_information_trimmed or "geforce660" in system_information_trimmed or "nvidia660" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx650ti" in system_information_trimmed or "geforce650ti" in system_information_trimmed or "nvidia650ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx650" in system_information_trimmed or "geforce650" in system_information_trimmed or "nvidia650" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_kepler"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx590" in system_information_trimmed or "geforce590" in system_information_trimmed or "nvidia590" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx580" in system_information_trimmed or "geforce580" in system_information_trimmed or "nvidia580" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx570" in system_information_trimmed or "geforce570" in system_information_trimmed or "nvidia570" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx560ti" in system_information_trimmed or "geforce560ti" in system_information_trimmed or "nvidia560ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx560" in system_information_trimmed or "geforce560" in system_information_trimmed or "nvidia560" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gtx550ti" in system_information_trimmed or "geforce550ti" in system_information_trimmed or "nvidia550ti" in system_information_trimmed:
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "gt710" in system_information_trimmed:
# The GeForce GT 710 is a Fermi GPU despite being in the 700 series.
statistics["gpu"]["nvidia"]["dedicated_fermi"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["no"].add(user)
statistics["gpu_vrs"]["dedicated"]["no"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["no"].add(user)
elif "nvidia" in system_information_trimmed:
statistics["gpu"]["nvidia"]["unknown"].add(user)
if "rx7900xtx" in system_information_trimmed or "radeon7900xtx" in system_information_trimmed or "amd7900xtx" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna3"].add(user)
statistics["gpu_vram"]["24_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx7900xt" in system_information_trimmed or "radeon7900xt" in system_information_trimmed or "amd7900xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna3"].add(user)
statistics["gpu_vram"]["20_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx7600xt" in system_information_trimmed or "radeon7600xt" in system_information_trimmed or "amd7600xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna3"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6950xt" in system_information_trimmed or "radeon6950xt" in system_information_trimmed or "amd6950xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["16_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6900xt" in system_information_trimmed or "radeon6900xt" in system_information_trimmed or "amd6900xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["16_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6850xt" in system_information_trimmed or "radeon6850xt" in system_information_trimmed or "amd6850xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["16_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6800xt" in system_information_trimmed or "radeon6800xt" in system_information_trimmed or "amd6800xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["16_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6750xt" in system_information_trimmed or "radeon6750xt" in system_information_trimmed or "amd6750xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6700xt" in system_information_trimmed or "radeon6700xt" in system_information_trimmed or "amd6700xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["12_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6700" in system_information_trimmed or "radeon6700" in system_information_trimmed or "amd6700" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["10_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6650xt" in system_information_trimmed or "radeon6650xt" in system_information_trimmed or "amd6650xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6600xt" in system_information_trimmed or "radeon6600xt" in system_information_trimmed or "amd6600xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["8_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6500xt" in system_information_trimmed or "radeon6500xt" in system_information_trimmed or "amd6500xt" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["4_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "rx6400" in system_information_trimmed or "radeon6400" in system_information_trimmed or "amd6400" in system_information_trimmed:
statistics["gpu"]["amd"]["dedicated_rdna2"].add(user)
statistics["gpu_vram"]["4_gb"].add(user)
statistics["gpu_raytracing"]["dedicated"]["yes"].add(user)
statistics["gpu_vrs"]["dedicated"]["yes"].add(user)
statistics["gpu_mesh_shaders"]["dedicated"]["yes"].add(user)
elif "radeon" in system_information_trimmed:
statistics["gpu"]["amd"]["unknown"].add(user)
# TODO: Add Intel IGPs.
if (
"irisxe" in system_information_trimmed
or "intelhd" in system_information_trimmed
):
statistics["gpu"]["intel"]["unknown"].add(user)
# TODO: Gather more statistics.
for info in user_system_infos:
print(info["user"])
print(info["system_information"])
print()
print(statistics)
if __name__ == "__main__":
main()