diff --git a/main.py b/main.py index c30db0b..ca6ecdf 100755 --- a/main.py +++ b/main.py @@ -56,8 +56,9 @@ def main() -> None: "linux": { "ubuntu": set(), "fedora": set(), - "arch": set(), + "debian": set(), "mint": set(), + "arch": set(), "unknown": set(), }, "macos": { @@ -134,50 +135,163 @@ def main() -> None: "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 . + "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": { - "rdna3": set(), - "rdna2": set(), - "rdna": set(), - "vega": set(), - "polaris": set(), - "gcn3.0": set(), - "gcn2.0": set(), - "gcn1.0": set(), - "vliw4": set(), - "igp_rdna3": set(), - "igp_rdna2": set(), - "igp_vega": set(), + "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": { - "arc_alchemist": set(), - "igp_meteor_lake": set(), - "igp_raptor_lake": set(), - "igp_alder_lake": set(), - "igp_rocket_lake": set(), - "igp_ice_lake": set(), - "igp_coffee_lake_refresh": set(), - "igp_coffee_lake": set(), - "igp_kaby_lake": set(), - "igp_skylake": set(), - "igp_haswell": set(), - "igp_ivy_bridge": set(), - "igp_sandy_bridge": set(), + "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": { - "ada_lovelace": set(), - "ampere": set(), - "turing": set(), - "pascal": set(), - "maxwell": set(), - "kepler": set(), - "fermi": set(), - "tesla": set(), + "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 . + "<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"]: @@ -194,25 +308,582 @@ def main() -> None: {"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 system_information.lower().find("windows 11") != -1: + if "windows11" in system_information_trimmed: statistics["os"]["windows"]["11"].add(user) - elif system_information.lower().find("windows 10") != -1: + elif "windows10" in system_information_trimmed: statistics["os"]["windows"]["10"].add(user) - elif system_information.lower().find("windows 8.1") != -1: + elif "windows8.1" in system_information_trimmed: statistics["os"]["windows"]["8.1"].add(user) - elif system_information.lower().find("windows 8") != -1: + elif "windows8" in system_information_trimmed: statistics["os"]["windows"]["8"].add(user) - elif system_information.lower().find("windows 7") != -1: + elif "windows7" in system_information_trimmed: statistics["os"]["windows"]["7"].add(user) - elif system_information.lower().find("windows") != -1: + elif "windows" in system_information_trimmed: statistics["os"]["windows"]["unknown"].add(user) - if system_information.lower().find("ubuntu") != -1: + if "ubuntu" in system_information_trimmed: statistics["os"]["linux"]["ubuntu"].add(user) - elif system_information.lower().find("linux") != -1: + 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 Intel CPUs. + 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 AMD CPUs. + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: + 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: