diff options
author | Chip Davis <cdavis@codeweavers.com> | 2018-11-05 23:55:56 +0300 |
---|---|---|
committer | Chip Davis <cdavis@codeweavers.com> | 2018-11-05 23:56:36 +0300 |
commit | 0d949e11ff8401f1a3e6f098dbf337d7b12788cc (patch) | |
tree | 80f1c52bab9e52edf656b6724f20a393ef6db1f8 /reference/opt/shaders/comp | |
parent | ca4744ab728e3fe1a6585e07747aa6b7ec6a080f (diff) |
Support bitcasts of 16-bit types.
Diffstat (limited to 'reference/opt/shaders/comp')
-rw-r--r-- | reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp | 38 | ||||
-rw-r--r-- | reference/opt/shaders/comp/bitcast-16bit-2.invalid.comp | 43 |
2 files changed, 81 insertions, 0 deletions
diff --git a/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp b/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp new file mode 100644 index 00000000..7420586f --- /dev/null +++ b/reference/opt/shaders/comp/bitcast-16bit-1.invalid.comp @@ -0,0 +1,38 @@ +#version 450 +#if defined(GL_AMD_gpu_shader_half_float) +#extension GL_AMD_gpu_shader_half_float : require +#elif defined(GL_NV_gpu_shader5) +#extension GL_NV_gpu_shader5 : require +#elif defined(GL_EXT_shader_16bit_storage) +#extension GL_EXT_shader_16bit_storage : require +#else +#error No extension available for FP16. +#endif +#if defined(GL_AMD_gpu_shader_int16) +#extension GL_AMD_gpu_shader_int16 : require +#elif defined(GL_EXT_shader_16bit_storage) +#extension GL_EXT_shader_16bit_storage : require +#else +#error No extension available for Int16. +#endif +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0, std430) buffer SSBO0 +{ + i16vec4 inputs[]; +} _25; + +layout(binding = 1, std430) buffer SSBO1 +{ + ivec4 outputs[]; +} _39; + +void main() +{ + uint ident = gl_GlobalInvocationID.x; + f16vec2 a = int16BitsToFloat16(_25.inputs[ident].xy); + _39.outputs[ident].x = int(packFloat2x16(a + f16vec2(float16_t(1), float16_t(1)))); + _39.outputs[ident].y = packInt2x16(_25.inputs[ident].zw); + _39.outputs[ident].z = int(packUint2x16(u16vec2(_25.inputs[ident].xy))); +} + diff --git a/reference/opt/shaders/comp/bitcast-16bit-2.invalid.comp b/reference/opt/shaders/comp/bitcast-16bit-2.invalid.comp new file mode 100644 index 00000000..416bc4a2 --- /dev/null +++ b/reference/opt/shaders/comp/bitcast-16bit-2.invalid.comp @@ -0,0 +1,43 @@ +#version 450 +#if defined(GL_AMD_gpu_shader_int16) +#extension GL_AMD_gpu_shader_int16 : require +#elif defined(GL_EXT_shader_16bit_storage) +#extension GL_EXT_shader_16bit_storage : require +#else +#error No extension available for Int16. +#endif +#if defined(GL_AMD_gpu_shader_half_float) +#extension GL_AMD_gpu_shader_half_float : require +#elif defined(GL_NV_gpu_shader5) +#extension GL_NV_gpu_shader5 : require +#elif defined(GL_EXT_shader_16bit_storage) +#extension GL_EXT_shader_16bit_storage : require +#else +#error No extension available for FP16. +#endif +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 1, std430) buffer SSBO1 +{ + i16vec4 outputs[]; +} _21; + +layout(binding = 0, std430) buffer SSBO0 +{ + ivec4 inputs[]; +} _29; + +layout(binding = 2, std140) uniform UBO +{ + f16vec4 const0; +} _40; + +void main() +{ + uint ident = gl_GlobalInvocationID.x; + i16vec2 _47 = unpackInt2x16(_29.inputs[ident].x) + float16BitsToInt16(_40.const0.xy); + _21.outputs[ident] = i16vec4(_47.x, _47.y, _21.outputs[ident].z, _21.outputs[ident].w); + i16vec2 _66 = i16vec2(unpackUint2x16(uint(_29.inputs[ident].y)) - float16BitsToUint16(_40.const0.zw)); + _21.outputs[ident] = i16vec4(_21.outputs[ident].x, _21.outputs[ident].y, _66.x, _66.y); +} + |