mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-21 10:44:01 -04:00
80 lines
2.1 KiB
Go
80 lines
2.1 KiB
Go
package gpu
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func writeICD(t *testing.T, dir, name, library string) string {
|
|
t.Helper()
|
|
path := filepath.Join(dir, name)
|
|
if err := os.WriteFile(path, []byte(`{"file_format_version":"1.0.0","ICD":{"library_path":"`+library+`"}}`), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return path
|
|
}
|
|
|
|
func TestFindEGLVendorICDs(t *testing.T) {
|
|
etc := t.TempDir()
|
|
usr := t.TempDir()
|
|
writeICD(t, usr, "10_nvidia.json", "libEGL_nvidia.so.0")
|
|
mesaPath := writeICD(t, usr, "50_mesa.json", "libEGL_mesa.so.0")
|
|
nvidiaPath := writeICD(t, etc, "10_nvidia.json", "/usr/lib/libEGL_nvidia.so.0")
|
|
if err := os.WriteFile(filepath.Join(etc, "broken.json"), []byte("{"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
mesa, nvidia := findEGLVendorICDs([]string{etc, usr})
|
|
if mesa != mesaPath {
|
|
t.Errorf("mesa = %q, want %q", mesa, mesaPath)
|
|
}
|
|
if nvidia != nvidiaPath {
|
|
t.Errorf("nvidia = %q, want %q", nvidia, nvidiaPath)
|
|
}
|
|
|
|
mesa, nvidia = findEGLVendorICDs([]string{filepath.Join(etc, "missing")})
|
|
if mesa != "" || nvidia != "" {
|
|
t.Errorf("missing dir: got %q %q, want empty", mesa, nvidia)
|
|
}
|
|
}
|
|
|
|
func TestDrmDeviceDriver(t *testing.T) {
|
|
root := t.TempDir()
|
|
charDir := filepath.Join(root, "char")
|
|
deviceDir := filepath.Join(charDir, "226:128", "device")
|
|
if err := os.MkdirAll(deviceDir, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.Symlink("../../../../bus/pci/drivers/amdgpu", filepath.Join(deviceDir, "driver")); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
driver, err := drmDeviceDriver(charDir, 226<<8|128)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if driver != "amdgpu" {
|
|
t.Errorf("driver = %q, want amdgpu", driver)
|
|
}
|
|
if _, err := drmDeviceDriver(charDir, 226<<8|129); err == nil {
|
|
t.Error("unknown device: want error")
|
|
}
|
|
}
|
|
|
|
func TestMainDeviceFromEvent(t *testing.T) {
|
|
raw := make([]byte, 8)
|
|
binary.NativeEndian.PutUint64(raw, 226<<8|128)
|
|
dev, err := mainDeviceFromEvent(raw)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if dev != 226<<8|128 {
|
|
t.Errorf("dev = %d", dev)
|
|
}
|
|
if _, err := mainDeviceFromEvent(raw[:4]); err == nil {
|
|
t.Error("short array: want error")
|
|
}
|
|
}
|