Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChip Davis <cdavis@codeweavers.com>2018-11-05 23:55:56 +0300
committerChip Davis <cdavis@codeweavers.com>2018-11-05 23:56:36 +0300
commit0d949e11ff8401f1a3e6f098dbf337d7b12788cc (patch)
tree80f1c52bab9e52edf656b6724f20a393ef6db1f8 /reference/opt/shaders/comp
parentca4744ab728e3fe1a6585e07747aa6b7ec6a080f (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.comp38
-rw-r--r--reference/opt/shaders/comp/bitcast-16bit-2.invalid.comp43
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);
+}
+