HLSL Working Group

2026-07-16 - HLSL Working Group Minutes

Discussion Topics

  • This week in HLSL
  • Linkage in SPIR-V (llvm/llvm-project#209672)

Meeting Notes

This Week in HLSL

This was a slower week in HLSL, but we did see 27 PRs merged:

  • HLSL Frontend
    • Diagnostic improvements for for entry functions and resource parameters
    • RWTexture2D was implemented and the tests for textures were cleaned up
  • DirectX Backend
    • Some container related flags for debug and PDB handling were implemented
  • SPIR-V Backend
    • Multiple improvements to lowering and legalization.
    • Various refactorings
  • Offload Test Suite
    • Various XFAILs were updated per implementation effort elsewhere
    • Infrastructure to run CI using lavapipe and WARP was improved

There are 61 ongoing PRs and 23 new PRs.

For a full list of merged PRs, see the appendix.

Linkage in SPIR-V

@farzonl has a PR up to deal with various issues related to the fact that we don’t have a linker phase in HLSL’s compilation flow. He would like feedback if this direction makes sense. See llvm/llvm-project#209672.

Appendix: Merged PRs

HLSL Frontend

  • [HLSL] Adds diagnostics for missing/ambiguous shader entry function. (llvm/llvm-project#184892)
  • [HLSL] Reject unbounded resource array and noinline function resource parameters (llvm/llvm-project#208111)
  • [HLSL] Implement RWTexture2D (llvm/llvm-project#208267)
  • [HLSL] Consolidate texture tests (llvm/llvm-project#209348)

DirectX Backend

  • [DirectX] Add --dx-embed-debug and --dx-pdb-path flags (llvm/llvm-project#204166)
  • [Driver][DirectX] Add /Qsource_in_debug_module flag (llvm/llvm-project#204415)

SPIR-V Backend

  • [SPIR-V] Tie Int64ImageEXT to R64i/R64ui image format, not sampled type (llvm/llvm-project#203005)
  • [SPIRV] Sign-extend operands of sign-sensitive ops on sub-pow2 widths (llvm/llvm-project#203661)
  • [SPIR-V] Fix truncated LinkageAttributes OpDecorate for numeric-named functions (llvm/llvm-project#207332)
  • [SPIR-V] Emit UniformId decoration as OpDecorateId with a Scope id operand (llvm/llvm-project#207958)
  • [SPIR-V] Fix crash on switch with odd-width condition type (llvm/llvm-project#208026)
  • [NFC][SPIR-V] Remove unused LowLevelType parameter from buildLoadInst (llvm/llvm-project#208428)
  • [X86][AArch64][SPIRV] add more tests for ldexp/frexp (llvm/llvm-project#208462)
  • [NFC][SPIR-V] Remove unused GR parameter from vector elt legalizers (llvm/llvm-project#208495)
  • [NFC][SPIR-V] Add emitSimpleExecutionMode helper to dedup single imm OpExecutionMode emission (llvm/llvm-project#208674)
  • [SPIR-V] Preserve offset alignment in pointer cast legalization (llvm/llvm-project#209251)
  • [SPIR-V] Unify duplicated named MDNode lookup helper (llvm/llvm-project#209376)
  • [NFC][SPIR-V] Remove stale XFAIL in vk-pushconstant-layout.ll (llvm/llvm-project#209447)
  • [SPIR-V] Remove dead typed pointer check in getArgSPIRVType (llvm/llvm-project#209515)

Offload Test Suite

  • Update Clang XFAILs for Texture2D SRVtoUAV tests (llvm/offload-test-suite#1363)
  • [DX][NV] Remove XFAILs from 64-bit firstbitlow and firstbithigh tests (llvm/offload-test-suite#1364)
  • [NV] XFAIL PartiallyMappedResources.test (llvm/offload-test-suite#1366)
  • Make each runner upload lit test results (llvm/offload-test-suite#1367)
  • Make test-all mutually exclusive to test-dx-all and test-vk-all (llvm/offload-test-suite#1368)
  • [VK] XFAIL matrix_swizzle_one_based.test and matrix_swizzle_zero_based.test on Clang Vulkan (llvm/offload-test-suite#1369)
  • Move Lavapipe targets to experimental tier (llvm/offload-test-suite#1371)
  • Add test-lavapipe, test-warp and disable-default-tests (llvm/offload-test-suite#1372)