github KhronosGroup/glslang 16.4.0
Release 16.4.0

6 hours ago

Descriptor Heap:

  • Implement GLSL_EXT_structured_descriptor_heap with SPIR-V layout generation, heap offset access, buffer references, matrix layout decorations, and correct readonly/writeonly qualifier propagation for buffer and image descriptors
  • Fix descriptor heap-bound buffer access to use typed pointers
  • Omit NonUniform decoration when using descriptor heaps, as the SPIR-V spec does not require it
  • Add --relax-set-binding-limits option to allow large layout(set) and layout(binding) values for descriptor heap-style workflows with sparse set spaces
  • Reject combined image samplers with descriptor_heap

Compute Shader Derivatives:

  • Fix GL_KHR_compute_shader_derivatives regressions on shaders using the GL_NV variant
  • Update compute shader derivative rules to allow texture operations with implicit derivatives without extensions, falling back to LoD 0

New Extensions:

  • Implement GL_EXT_ocp_microscaling_types
  • Implement GL_NV_cooperative_matrix_decode_vector
  • Add basic support for GL_NV_desktop_lowp_mediump
  • Implement GL_EXT_opacity_micromap_ray_query_mode

Bug Fixes:

  • Fix generated decoration string from UTF8EncodingKHR to UTFEncodingKHR
  • Fix missing SPIR-V extension emission for float16 derivative functions with SPV_AMD_gpu_shader_half_float
  • Apply NoContraction decoration to dot() when noContraction is set
  • Fix OpStore of buffer device address pointer to use 8-byte alignment, consistent with loads
  • Fix RayTracingOpacityMicromapKHR capability emission to only occur when gl_RayFlagsForceOpacityMicromap2StateEXT is actually used, fixing SPIR-V validation failures in ray query shaders outside ray-tracing pipeline stages
  • Fix setInvertY() to apply Y-inversion to GLSL vertex, geometry, and tessellation-evaluation shaders (previously only affected HLSL)
  • Fix .length() on arrays of long/cooperative vectors to use OpArrayLength instead of a constant component count
  • Fix unnecessary cooperative matrix conversions when creating arrays of KHR cooperative matrices
  • Add error for cooperative matrix *= with bf16/fp8 scalar operands
  • Fix out-of-bounds access in elseSeen at maximum #if/#ifdef nesting depth
  • Fix out-of-bounds read on empty struct texture template types
  • Fix crash in layoutObjectCheck when accessing members of an empty block
  • Emit an error when HLSL [numthreads] is given more than three arguments instead of crashing the compiler.
  • Emit error when attempting to convert a literal string to an incompatible type
  • Fix abortKHR to preserve the original user-defined string without modification
  • Fix out-of-bounds indexing in TDefaultIoResolverBase::addStage when a negative EShLanguage value is passed

Other:

  • Add --discard-is-terminate option to emit OpTerminateInvocation instead of OpDemoteToHelperInvocation for GLSL discard when targeting SPIR-V 1.6+
  • Add REUSE license compliance infrastructure

Don't miss a new glslang release

NewReleases is sending notifications on new releases.