Skip to content

Commit 6dc54f9

Browse files
authored
Add GPU support loading DRI devices and assigning related groupse (#543)
1 parent 1d86e09 commit 6dc54f9

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

internal/orchestrator/orchestrator.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -823,20 +823,26 @@ func getDevices() []string {
823823
panic(err)
824824
}
825825

826-
// Get video devices
827-
tmpFilter := deviceList
828-
tmpFilter.FilterPrefix("video")
829-
videoDevices := tmpFilter.AsStrings()
830-
831-
// Get audio devices
832-
tmpFilter = deviceList
833-
tmpFilter.FilterPrefix("snd")
834-
soundDevices := []string{}
835-
if len(tmpFilter.AsStrings()) > 0 {
836-
soundDevices = append(soundDevices, "/dev/snd") // Add /dev/snd as a sound device
826+
devices := []string{}
827+
addSoundDevice, addGPUDevice := false, false
828+
829+
for _, p := range deviceList {
830+
switch {
831+
case p.HasPrefix("video"):
832+
devices = append(devices, p.String())
833+
case p.HasPrefix("snd"):
834+
addSoundDevice = true
835+
case p.HasPrefix("dri"):
836+
addGPUDevice = true
837+
}
837838
}
838-
839-
return append(videoDevices, soundDevices...)
839+
if addSoundDevice {
840+
devices = append(devices, "/dev/snd")
841+
}
842+
if addGPUDevice {
843+
devices = append(devices, "/dev/dri")
844+
}
845+
return devices
840846
}
841847

842848
func disconnectSerialFromRPCRouter(ctx context.Context, portAddress string, cfg config.Configuration) func() {

internal/orchestrator/provision.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ func generateMainComposeFile(
310310
}
311311

312312
devices := getDevices()
313-
groups := []string{"dialout", "video", "audio"}
313+
groups := []string{"dialout", "video", "audio", "render"}
314314

315315
mainAppCompose.Services = &mainService{
316316
Main: service{
@@ -407,11 +407,11 @@ func generateServicesOverrideFile(services []string, servicesThatRequireDevices
407407
overrideCompose.Services = make(map[string]serviceOverride, len(services))
408408
for _, svc := range services {
409409
override := serviceOverride{
410-
User: user,
411-
GroupAdd: groups,
410+
User: user,
412411
}
413412
if slices.Contains(servicesThatRequireDevices, svc) {
414413
override.Devices = &devices
414+
override.GroupAdd = groups
415415
}
416416
overrideCompose.Services[svc] = override
417417
}

0 commit comments

Comments
 (0)