@@ -20,6 +20,7 @@ import (
20
20
"fmt"
21
21
"os"
22
22
"path/filepath"
23
+ "runtime"
23
24
"strings"
24
25
25
26
"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image"
@@ -81,14 +82,25 @@ func NewGraphicsMountsDiscoverer(logger logger.Interface, driver *root.Driver, h
81
82
// vulkan ICD files are at {{ .driverRoot }}/vulkan instead of in /etc/vulkan.
82
83
func newVulkanConfigsDiscover (logger logger.Interface , driver * root.Driver ) Discover {
83
84
locator := lookup .First (driver .Configs (), driver .Files ())
85
+
86
+ required := []string {
87
+ "vulkan/icd.d/nvidia_icd.json" ,
88
+ "vulkan/icd.d/nvidia_layers.json" ,
89
+ "vulkan/implicit_layer.d/nvidia_layers.json" ,
90
+ }
91
+ // For some RPM-based driver packages, the vulkan ICD files are installed to
92
+ // /usr/share/vulkan/icd.d/nvidia_icd.%{_target_cpu}.json
93
+ // We also include this in the list of candidates for the ICD file.
94
+ switch runtime .GOARCH {
95
+ case "amd64" :
96
+ required = append (required , "vulkan/icd.d/nvidia_icd.x86_64.json" )
97
+ case "arm64" :
98
+ required = append (required , "vulkan/icd.d/nvidia_icd.aarch64.json" )
99
+ }
84
100
return & mountsToContainerPath {
85
- logger : logger ,
86
- locator : locator ,
87
- required : []string {
88
- "vulkan/icd.d/nvidia_icd.json" ,
89
- "vulkan/icd.d/nvidia_layers.json" ,
90
- "vulkan/implicit_layer.d/nvidia_layers.json" ,
91
- },
101
+ logger : logger ,
102
+ locator : locator ,
103
+ required : required ,
92
104
containerRoot : "/etc" ,
93
105
}
94
106
}
0 commit comments