Skip to content

b9780

Choose a tag to compare

@github-actions github-actions released this 24 Jun 10:18
1191758

vulkan: fail the build when a shader fails to compile (#24450)

  • vulkan-shaders-gen: fail the build when a shader fails to compile

vulkan-shaders-gen did not detect shader-compile subprocess failures, so a
broken libggml-vulkan could be produced while the build reported success and
the breakage only surfaced at run time. execute_command() discarded the child
exit code (POSIX waitpid passed nullptr for status; the Windows branch never
called GetExitCodeProcess) and string_to_spv decided success only from whether
stderr was empty, so a non-zero exit with empty stderr, or a subprocess that
failed to launch, was treated as success.

Return the child exit code from execute_command() (WEXITSTATUS on POSIX,
GetExitCodeProcess on Windows), treat a non-zero exit or non-empty stderr or a
launch exception as a failure, and record it in an atomic flag. main() checks
the flag after process_shaders() and returns EXIT_FAILURE before writing the
output files, so the build stops instead of emitting a broken backend.

Fixes #24393

Signed-off-by: liminfei-amd 91481003+liminfei-amd@users.noreply.github.com

  • vulkan-shaders-gen: simplify compile_failed access and drop unreachable return

Address review feedback on #24450:

  • Access the std::atomic compile_failed directly (= / implicit bool)
    instead of .store()/.load(); the flag stays atomic because the worker
    threads in process_shaders() set it concurrently.
  • Remove the unreachable trailing return -1 in execute_command(): on POSIX the
    child _exit()s after execvp and the parent returns (fork()<0 throws); on
    Windows the block returns the exit code.

Signed-off-by: liminfei-amd 91481003+liminfei-amd@users.noreply.github.com


Signed-off-by: liminfei-amd 91481003+liminfei-amd@users.noreply.github.com

macOS/iOS:

Linux:

Android:

Windows:

openEuler:

  • DISABLED
  • openEuler x86 (310p)
  • openEuler x86 (910b, ACL Graph)
  • openEuler aarch64 (310p)
  • openEuler aarch64 (910b, ACL Graph)

UI: