package platform import "testing" // These fixtures verify documented model mappings, not physical GPU/driver // detection. See the vendor references and user-report procedure in the guide. func TestGPUCatalogKnownModels(t *testing.T) { rdna2 := []string{"avc", "hevc", "vp9", "av1", "vc1", "mpeg2"} navi24 := []string{"avc", "hevc", "vp9"} rdna3 := []string{"avc", "hevc", "vp9", "av1"} alchemist := []string{"avc", "hevc", "vp9", "av1", "mpeg2"} modernIntel := []string{"avc", "hevc", "vp9", "vp8", "av1", "mpeg2"} vvcIntel := []string{"avc", "hevc", "vp9", "vp8", "av1", "vvc", "mpeg2"} tests := []struct { name string want []string }{ {"AMD Radeon RX 6850M XT", rdna2}, {"AMD Radeon RX 6800M", rdna2}, {"AMD Radeon RX 6700M", rdna2}, {"AMD Radeon RX 6650M XT", rdna2}, {"AMD Radeon RX 6650M", rdna2}, {"AMD Radeon RX 6600M", rdna2}, {"AMD Radeon RX 6800S", rdna2}, {"AMD Radeon RX 6700S", rdna2}, {"AMD Radeon RX 6600S", rdna2}, {"AMD Radeon RX 6550M", navi24}, {"AMD Radeon RX 6500M", navi24}, {"AMD Radeon RX 6450M", navi24}, {"AMD Radeon RX 6300M", navi24}, {"AMD Radeon RX 7900M", rdna3}, {"AMD Radeon RX 7800M", rdna3}, {"AMD Radeon RX 7600M XT", rdna3}, {"AMD Radeon RX 7600M", rdna3}, {"AMD Radeon RX 7700S", rdna3}, {"AMD Radeon RX 7600S", rdna3}, {"AMD Radeon(TM) 660M", rdna3}, {"AMD Radeon(TM) 680M", rdna3}, {"AMD Radeon 740M", rdna3}, {"AMD Radeon 760M", rdna3}, {"AMD Radeon 780M", rdna3}, {"AMD Radeon 860M", rdna3}, {"AMD Radeon 880M", rdna3}, {"AMD Radeon 890M", rdna3}, {"Intel(R) Arc(TM) A370M Graphics", alchemist}, {"Intel Arc Pro A60", alchemist}, {"Intel Arc Pro A60M", alchemist}, {"Intel Arc Pro B60", modernIntel}, {"Intel Arc Pro B50", modernIntel}, {"Intel Arc 140T GPU", modernIntel}, {"Intel Arc Graphics 130T", modernIntel}, {"Intel Arc 140V GPU", vvcIntel}, {"Intel(R) Arc(TM) Graphics 140V", vvcIntel}, {"Intel® Arc™ Graphics 130V", vvcIntel}, {"Intel Arc B390 GPU", vvcIntel}, {"Intel Arc B370 GPU", vvcIntel}, {"Arrow Lake", modernIntel}, {"Panther Lake", vvcIntel}, {"Intel Core Ultra 7 268V", vvcIntel}, {"Intel UHD Graphics 770", []string{"avc", "hevc", "vp9", "av1", "vc1", "mpeg2"}}, // Explicit models preserve desktop/laptop recognition without giving // workstation RTX 3000 the capabilities of GeForce RTX 30xx. {"NVIDIA GeForce RTX 2050", []string{"avc", "hevc", "vp9", "av1", "vp8", "mpeg2", "vc1"}}, {"NVIDIA Quadro RTX 3000", []string{"avc", "hevc", "vp9", "vp8", "mpeg2", "vc1"}}, {"NVIDIA Quadro RTX 4000", []string{"avc", "hevc", "vp9", "vp8", "mpeg2", "vc1"}}, {"NVIDIA GeForce RTX 3050 Laptop GPU", []string{"avc", "hevc", "vp9", "av1", "vp8", "mpeg2", "vc1"}}, {"NVIDIA GeForce RTX 5060 Laptop GPU", []string{"avc", "hevc", "vp9", "av1", "vp8", "mpeg2", "vc1"}}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, matched := lookupGPUCodecsWithFallback(tt.name, determineModelBrand(tt.name)) if !matched || !setsEqual(got, tt.want) { t.Fatalf("codecs = %v, matched = %v; want %v", got, matched, tt.want) } }) } } func TestGPUCatalogAmbiguousNamesStayUnknown(t *testing.T) { for _, name := range []string{ "Intel Graphics", "Intel Xe Graphics", "Intel Arc Graphics", "Intel Arc B-Series", "Intel Core Ultra 200", "Intel Core Ultra 200H", "Intel Core Ultra 7 255H", "NVIDIA RTX 3000", "NVIDIA RTX 4000", "NVIDIA GeForce RTX 50900", "Intel Arc B999", "AMD Radeon Graphics", "AMD Radeon RX 6800Mystery", "AMD Radeon RX 7600Unknown", "AMD Radeon Vega 60", "Intel Arc A7700", "NotNavi 21", "Intel Arc Graphics 999V", "Microsoft Basic Display Adapter", } { t.Run(name, func(t *testing.T) { got, matched := lookupGPUCodecsWithFallback(name, determineModelBrand(name)) if matched || !setsEqual(got, []string{"unknown"}) { t.Fatalf("ambiguous name inferred codecs %v (matched %v)", got, matched) } }) } }