Descriptor Heap:
- Implement
GLSL_EXT_structured_descriptor_heapwith SPIR-V layout generation, heap offset access, buffer references, matrix layout decorations, and correctreadonly/writeonlyqualifier propagation for buffer and image descriptors - Fix descriptor heap-bound buffer access to use typed pointers
- Omit
NonUniformdecoration when using descriptor heaps, as the SPIR-V spec does not require it - Add
--relax-set-binding-limitsoption to allow largelayout(set)andlayout(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_derivativesregressions on shaders using theGL_NVvariant - 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
UTF8EncodingKHRtoUTFEncodingKHR - Fix missing SPIR-V extension emission for
float16derivative functions withSPV_AMD_gpu_shader_half_float - Apply
NoContractiondecoration todot()whennoContractionis set - Fix
OpStoreof buffer device address pointer to use 8-byte alignment, consistent with loads - Fix
RayTracingOpacityMicromapKHRcapability emission to only occur whengl_RayFlagsForceOpacityMicromap2StateEXTis 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 useOpArrayLengthinstead 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
elseSeenat maximum#if/#ifdefnesting depth - Fix out-of-bounds read on empty struct texture template types
- Fix crash in
layoutObjectCheckwhen 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
abortKHRto preserve the original user-defined string without modification - Fix out-of-bounds indexing in
TDefaultIoResolverBase::addStagewhen a negativeEShLanguagevalue is passed
Other:
- Add
--discard-is-terminateoption to emitOpTerminateInvocationinstead ofOpDemoteToHelperInvocationfor GLSLdiscardwhen targeting SPIR-V 1.6+ - Add REUSE license compliance infrastructure