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 /shaders | |
parent | ca4744ab728e3fe1a6585e07747aa6b7ec6a080f (diff) |
Support bitcasts of 16-bit types.
Diffstat (limited to 'shaders')
-rw-r--r-- | shaders/comp/bitcast-16bit-1.invalid.comp | 23 | ||||
-rw-r--r-- | shaders/comp/bitcast-16bit-2.invalid.comp | 26 |
2 files changed, 49 insertions, 0 deletions
diff --git a/shaders/comp/bitcast-16bit-1.invalid.comp b/shaders/comp/bitcast-16bit-1.invalid.comp new file mode 100644 index 00000000..0c21cda3 --- /dev/null +++ b/shaders/comp/bitcast-16bit-1.invalid.comp @@ -0,0 +1,23 @@ +#version 450 core +#extension GL_AMD_gpu_shader_half_float : require +#extension GL_AMD_gpu_shader_int16 : require +layout(local_size_x = 1) in; + +layout(binding = 0, std430) buffer SSBO0 +{ + i16vec4 inputs[]; +}; + +layout(binding = 1, std430) buffer SSBO1 +{ + ivec4 outputs[]; +}; + +void main() +{ + uint ident = gl_GlobalInvocationID.x; + f16vec2 a = int16BitsToFloat16(inputs[ident].xy); + outputs[ident].x = int(packFloat2x16(a + f16vec2(1, 1))); + outputs[ident].y = packInt2x16(inputs[ident].zw); + outputs[ident].z = int(packUint2x16(u16vec2(inputs[ident].xy))); +} diff --git a/shaders/comp/bitcast-16bit-2.invalid.comp b/shaders/comp/bitcast-16bit-2.invalid.comp new file mode 100644 index 00000000..6bb66241 --- /dev/null +++ b/shaders/comp/bitcast-16bit-2.invalid.comp @@ -0,0 +1,26 @@ +#version 450 core +#extension GL_AMD_gpu_shader_half_float : require +#extension GL_AMD_gpu_shader_int16 : require +layout(local_size_x = 1) in; + +layout(binding = 0, std430) buffer SSBO0 +{ + ivec4 inputs[]; +}; + +layout(binding = 1, std430) buffer SSBO1 +{ + i16vec4 outputs[]; +}; + +layout(binding = 2) uniform UBO +{ + f16vec4 const0; +}; + +void main() +{ + uint ident = gl_GlobalInvocationID.x; + outputs[ident].xy = unpackInt2x16(inputs[ident].x) + float16BitsToInt16(const0.xy); + outputs[ident].zw = i16vec2(unpackUint2x16(uint(inputs[ident].y)) - float16BitsToUint16(const0.zw)); +} |