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 /shaders
parentca4744ab728e3fe1a6585e07747aa6b7ec6a080f (diff)
Support bitcasts of 16-bit types.
Diffstat (limited to 'shaders')
-rw-r--r--shaders/comp/bitcast-16bit-1.invalid.comp23
-rw-r--r--shaders/comp/bitcast-16bit-2.invalid.comp26
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));
+}