shaderc icon indicating copy to clipboard operation
shaderc copied to clipboard

glslc: GL_NV_shader_atomic_fp16_vector requires float16 arithmetic type

Open Botondar opened this issue 1 year ago • 1 comments

The imageAtomic<Op> functions added by GL_NV_shader_atomic_fp16_vector require the argument to be cast to f16vec4, however by default that throws the following error:

error: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
GL_AMD_gpu_shader_half_float
GL_EXT_shader_explicit_arithmetic_types
GL_EXT_shader_explicit_arithmetic_types_float16

Enabling GL_EXT_shader_explicit_arithmetic_types_float16 does fix the error, however it leads to a validation error during runtime because my GTX 970 doesn't support arithmetic float16 operations.

This might be an oversight in the spec (I'm not sure if the generated SPIR-V is even valid if it doesn't declare Float16 support) but in case it's not, using f16vec4 as a constructor in imageAtomic<Op> should not throw an error with GL_NV_shader_atomic_fp16_vector and/or GL_EXT_shader_16bit_storage.

Botondar avatar Oct 31 '24 17:10 Botondar

this seems like it should be filed upstream in the Glslang project https://github.com/KhronosGroup/glslang

dneto0 avatar Dec 12 '24 22:12 dneto0