File tree Expand file tree Collapse file tree
crates/lambda-rs/src/render Expand file tree Collapse file tree Original file line number Diff line number Diff line change 7272 if : ${{ matrix.os == 'ubuntu-latest' }}
7373 run : |
7474 echo "WGPU_BACKEND=vulkan" >> "$GITHUB_ENV"
75- # Prefer Mesa's software Vulkan (lavapipe) to ensure headless availability
76- echo "VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json" >> "$GITHUB_ENV"
75+ # Prefer Mesa's software Vulkan (lavapipe) to ensure headless availability.
76+ # The exact ICD filename can differ across Ubuntu images, so discover it.
77+ LVP_ICD="$(
78+ if [[ -d /usr/share/vulkan/icd.d ]]; then
79+ find /usr/share/vulkan/icd.d -maxdepth 1 -type f \
80+ \( -name '*lvp_icd*.json' -o -name '*lavapipe*.json' \) \
81+ -print 2>/dev/null | head -n1
82+ fi
83+ )"
84+ if [[ -z "$LVP_ICD" ]]; then
85+ echo "lavapipe Vulkan ICD not found under /usr/share/vulkan/icd.d" >&2
86+ ls -la /usr/share/vulkan/icd.d || true
87+ else
88+ echo "Using lavapipe ICD: $LVP_ICD"
89+ echo "VK_ICD_FILENAMES=$LVP_ICD" >> "$GITHUB_ENV"
90+ fi
7791 echo "LAMBDA_REQUIRE_GPU_ADAPTER=1" >> "$GITHUB_ENV"
7892 vulkaninfo --summary || true
7993
Original file line number Diff line number Diff line change 6262 - name : Configure Vulkan (Ubuntu)
6363 run : |
6464 echo "WGPU_BACKEND=vulkan" >> "$GITHUB_ENV"
65- # Prefer Mesa's software Vulkan (lavapipe) for headless availability
66- echo "VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json" >> "$GITHUB_ENV"
65+ # Prefer Mesa's software Vulkan (lavapipe) for headless availability.
66+ # The exact ICD filename can differ across Ubuntu images, so discover it.
67+ LVP_ICD="$(
68+ if [[ -d /usr/share/vulkan/icd.d ]]; then
69+ find /usr/share/vulkan/icd.d -maxdepth 1 -type f \
70+ \( -name '*lvp_icd*.json' -o -name '*lavapipe*.json' \) \
71+ -print 2>/dev/null | head -n1
72+ fi
73+ )"
74+ if [[ -z "$LVP_ICD" ]]; then
75+ echo "lavapipe Vulkan ICD not found under /usr/share/vulkan/icd.d" >&2
76+ ls -la /usr/share/vulkan/icd.d || true
77+ else
78+ echo "Using lavapipe ICD: $LVP_ICD"
79+ echo "VK_ICD_FILENAMES=$LVP_ICD" >> "$GITHUB_ENV"
80+ fi
6781 vulkaninfo --summary || true
6882
6983 - name : Generate full coverage JSON
Original file line number Diff line number Diff line change 5353 - name : Configure Vulkan for headless CI
5454 run : |
5555 echo "WGPU_BACKEND=vulkan" >> "$GITHUB_ENV"
56- echo "VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json" >> "$GITHUB_ENV"
56+ # Prefer Mesa's software Vulkan (lavapipe) for headless availability.
57+ # The exact ICD filename can differ across Ubuntu images, so discover it.
58+ LVP_ICD="$(
59+ if [[ -d /usr/share/vulkan/icd.d ]]; then
60+ find /usr/share/vulkan/icd.d -maxdepth 1 -type f \
61+ \( -name '*lvp_icd*.json' -o -name '*lavapipe*.json' \) \
62+ -print 2>/dev/null | head -n1
63+ fi
64+ )"
65+ if [[ -z "$LVP_ICD" ]]; then
66+ echo "lavapipe Vulkan ICD not found under /usr/share/vulkan/icd.d" >&2
67+ ls -la /usr/share/vulkan/icd.d || true
68+ else
69+ echo "Using lavapipe ICD: $LVP_ICD"
70+ echo "VK_ICD_FILENAMES=$LVP_ICD" >> "$GITHUB_ENV"
71+ fi
5772 echo "LAMBDA_REQUIRE_GPU_ADAPTER=1" >> "$GITHUB_ENV"
5873 vulkaninfo --summary || true
5974
Original file line number Diff line number Diff line change @@ -275,27 +275,33 @@ pub(crate) fn create_test_gpu_with_instance(
275275 instance : & Instance ,
276276 label_base : & str ,
277277) -> Option < Gpu > {
278- let built = GpuBuilder :: new ( )
278+ let primary_err = match GpuBuilder :: new ( )
279279 . with_label ( & format ! ( "{}-gpu" , label_base) )
280280 . build ( instance, None )
281- . ok ( ) ;
282- if built . is_some ( ) {
283- return built ;
284- }
281+ {
282+ Ok ( gpu ) => return Some ( gpu ) ,
283+ Err ( err ) => err ,
284+ } ;
285285
286- let fallback = GpuBuilder :: new ( )
286+ let fallback_err = match GpuBuilder :: new ( )
287287 . with_label ( & format ! ( "{}-gpu-fallback" , label_base) )
288288 . force_fallback ( true )
289289 . build ( instance, None )
290- . ok ( ) ;
290+ {
291+ Ok ( gpu) => return Some ( gpu) ,
292+ Err ( err) => err,
293+ } ;
291294
292- if fallback . is_none ( ) && require_gpu_adapter_for_tests ( ) {
295+ if require_gpu_adapter_for_tests ( ) {
293296 panic ! (
294- "No GPU adapter available for tests (set LAMBDA_REQUIRE_GPU_ADAPTER=0 to allow skipping)"
297+ "No GPU adapter available for tests (label_base={}).\n Primary adapter attempt: {}\n Fallback adapter attempt: {}\n (Set LAMBDA_REQUIRE_GPU_ADAPTER=0 to allow skipping)" ,
298+ label_base,
299+ primary_err,
300+ fallback_err,
295301 ) ;
296302 }
297303
298- return fallback ;
304+ return None ;
299305}
300306
301307// ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments