Update zluda.py (gpu_name_to_gfx)

-function changed into list of rules

-correct gfx codes attached to each GPU name

-addressed potential incorrect designation for  RX 6000 S Series, sort priority
This commit is contained in:
Rando717 2025-09-09 18:51:41 +02:00 committed by GitHub
parent e7d48450a3
commit ce8900fa25
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -88,68 +88,58 @@ def detect_amd_gpu_architecture():
print(f" :: GPU detection failed: {str(e)}") print(f" :: GPU detection failed: {str(e)}")
return None return None
def gpu_name_to_gfx(gpu_name): def gpu_name_to_gfx(gpu_name: str) -> str:
""" """
Map GPU names to their corresponding gfx architecture codes Map GPU names to their corresponding gfx architecture codes.
Uses prioritized rules with substring matching.
""" """
gpu_name_lower = gpu_name.lower() gpu_name_lower = gpu_name.lower()
# RDNA4 (gfx12xx) # List of (substrings, gfx_arch, comment)
if any(x in gpu_name_lower for x in ['rx 9070', 'r9070', 'rx 9060']): rules = [
if 'rx 9060' in gpu_name_lower: # RDNA4 (gfx12xx)
return 'gfx1200' # Navi 44 (gfx1200) (['rx 9060'], 'gfx1200', 'Navi 44'),
elif 'rx 9070' in gpu_name_lower or 'r9070' in gpu_name_lower: (['rx 9070', 'r9070'], 'gfx1201', 'Navi 48'),
return 'gfx1201' # Navi 48 (gfx1201)
# RDNA3.5 (gfx115x) # RDNA3.5 (gfx115x)
elif '890m' in gpu_name_lower: (['890m'], 'gfx1150', 'Strix Point'),
return 'gfx1150' # Strix Point (gfx1150) (['8060s', '8050s', '8040s', '880m'], 'gfx1151', 'Strix Halo'),
elif any(x in gpu_name_lower for x in ['8060s', '8050s', '8040s', '880m']): (['860m', '840m', '820m'], 'gfx1152', 'Krackan Point'),
return 'gfx1151' # Strix Halo (gfx1151)
elif any(x in gpu_name_lower for x in ['860m', '840m', '820m']):
return 'gfx1152' # Krackan Point (gfx1152)
# RDNA3 (gfx11xx) # RDNA3 (gfx110x)
elif any(x in gpu_name_lower for x in ['rx 7900', 'w7900', 'w7800']): (['rx 7900', 'w7900', 'w7800'], 'gfx1100', 'Navi 31'),
return 'gfx1100' # Navi 31 (gfx1100) (['rx 7800', 'rx 7700', 'w7700'], 'gfx1101', 'Navi 32'),
elif any(x in gpu_name_lower for x in ['rx 7800', 'rx 7700', 'w7700']): (['rx 7700s', 'rx 7650', 'rx 7600', 'w7600', 'w7500', 'rx 7400', 'w7400'], 'gfx1102', 'Navi 33'),
return 'gfx1101' # Navi 32 (gfx1101) (['780m', '760m', '740m'], 'gfx1100', 'Hawk Point'),
elif any(x in gpu_name_lower for x in ['rx 7700s', 'rx 7650', 'w7600', 'rx 7600', 'w7500', 'w7400', 'rx 7400']):
return 'gfx1102' # Navi 33 (gfx1102)
elif any(x in gpu_name_lower for x in ['780m', '760m', '740m']):
return 'gfx1100' # Hawk Point (gfx1103)
# RDNA2 (gfx10xx) # RDNA2 (gfx103x)
elif any(x in gpu_name_lower for x in ['rx 6950', 'rx 6900', 'w6800', 'rx 6800']): (['rx 6800m'], 'gfx1031', 'Navi 22'),
return 'gfx1030' # Navi 21 (gfx1030) (['rx 6800s', 'rx 6700s'], 'gfx1032', 'Navi 23'), # must be before 'rx 6800'
elif any(x in gpu_name_lower for x in ['rx 6850', 'rx 6800m', 'rx 6750', 'rx 6700']): (['rx 6950', 'rx 6900', 'rx 6800', 'w6800'], 'gfx1030', 'Navi 21'),
return 'gfx1030' # Navi 22 (gfx1031) (['rx 6850', 'rx 6750', 'rx 6700'], 'gfx1031', 'Navi 22'),
elif any(x in gpu_name_lower for x in ['rx 6800s', 'rx 6700s', 'rx 6650', 'rx 6600', 'w6600', 'rx 6550', 'rx 6500', 'rx 6450', 'rx 6400', 'rx 6300']): (['rx 6650', 'rx 6600', 'w6600'], 'gfx1032', 'Navi 23'),
return 'gfx1032' # Navi 23 (gfx1032) (['rx 6550', 'rx 6500', 'w6500', 'rx 6450', 'rx 6400', 'w6400', 'rx 6300', 'w6300'], 'gfx1034', 'Navi 24'),
elif any(x in gpu_name_lower for x in ['rx 6550', 'rx 6500', 'w6500', 'rx 6450', 'rx 6400', 'w6400', 'rx 6300', 'w6300']): (['680m', '660m'], 'gfx1035', 'Rembrandt'),
return 'gfx1032' # Navi 24 (gfx1034) (['610m'], 'gfx1037', ''),
elif '680m' in gpu_name_lower or '660m' in gpu_name_lower:
return 'gfx1030' # Rembrandt (gfx1035)
# RDNA1 (gfx10xx) # RDNA1 (gfx101x)
elif any(x in gpu_name_lower for x in ['rx 5700', 'w5700', 'rx 5600']): (['rx 5700', 'w5700', 'rx 5600'], 'gfx1010', 'Navi 10'),
return 'gfx1010' # Navi 10 (gfx1010) (['rx 5500', 'w5500', 'rx 5300', 'w5300'], 'gfx1012', 'Navi 14'),
elif any(x in gpu_name_lower for x in ['rx 5500', 'w5500', 'rx 5300', 'w5300']):
return 'gfx1010' # Navi 14 (gfx1012)
# Vega (gfx9xx) # Vega (gfx90x)
elif any(x in gpu_name_lower for x in ['vega 64', 'vega 56', 'frontier']): (['vega 64', 'vega 56', 'frontier'], 'gfx900', 'Vega 10'),
return 'gfx900' # Vega 10 (gfx900, gfx901) (['radeon vii', 'radeon pro vii'], 'gfx906', 'Vega 20'),
elif 'radeon vii' in gpu_name_lower or 'radeon pro vii' in gpu_name_lower: (['vega 11', 'vega 10', 'vega 9', 'vega 8', 'vega 6', 'vega 3'], 'gfx902', 'Raven Ridge'),
return 'gfx900' # Vega 20 (gfx906, gfx907)
elif any(x in gpu_name_lower for x in ['vega 11', 'vega 10', 'vega 9', 'vega 8', 'vega 6', 'vega 3']):
return 'gfx902' # Raven Ridge APU (gfx902, gfx903)
# Polaris (gfx8xx) # Polaris (gfx80x)
elif any(x in gpu_name_lower for x in ['rx 590', 'rx 580', 'rx 570', 'rx 560', 'rx 480', 'rx 470', 'rx 460']): (['rx 590', 'rx 580', 'rx 570', 'rx 560', 'rx 480', 'rx 470', 'rx 460'], 'gfx803', 'Polaris 10'),
return 'gfx803' # Polaris 10/11/20/21/30/31 (gfx803) (['rx 640', 'rx 550', 'rx 540'], 'gfx804', 'Polaris 12'),
elif any(x in gpu_name_lower for x in ['rx 640', 'rx 550', 'rx 540']): ]
return 'gfx803' # Polaris 12/22/23 (gfx804)
# Apply rules in order (priority matters)
for substrings, gfx, _ in rules:
if any(sub in gpu_name_lower for sub in substrings):
return gfx
# Default fallback - try to extract numbers and make educated guess # Default fallback - try to extract numbers and make educated guess
if 'rx 9' in gpu_name_lower: # Future RDNA4? if 'rx 9' in gpu_name_lower: # Future RDNA4?