Also fixed comments in packed format tests.
VK-GL-CTS Issue: 2433
New Tests:
dEQP-VK.texture.texel_buffer.uniform.snorm.*
Components: Vulkan
Change-Id: I3fdaa7befa034d728b53029bd2a884219b6e7282
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-uint-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-unorm-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.b10g11r11-ufloat-pack32
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8a8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16a16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8a8-snorm
dEQP-VK.texture.multisample.atomic.storage_image_r32i
dEQP-VK.texture.multisample.atomic.storage_image_r32ui
dEQP-VK.texture.texel_offset.texel_offset
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-uint-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-unorm-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.b10g11r11-ufloat-pack32
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8a8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16a16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8a8-snorm
dEQP-VK.texture.multisample.atomic.storage_image_r32i
dEQP-VK.texture.multisample.atomic.storage_image_r32ui
dEQP-VK.texture.texel_offset.texel_offset
END
BUFFER texel_buffer DATA_TYPE A2B10G10R10_UINT_PACK32 DATA
-0x40000001 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x40000400 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x40100000 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x40100400 # Unpacks to R = 1, G = 1, B = 1, A = 1
+0x40000001 # Unpacks to R = 1, G = 0, B = 0, A = 1
+0x40000400 # Unpacks to R = 0, G = 1, B = 0, A = 1
+0x40100000 # Unpacks to R = 0, G = 0, B = 1, A = 1
+0x40100400 # Unpacks to R = 0, G = 1, B = 1, A = 1
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE A2B10G10R10_UNORM_PACK32 DATA
-0xc00003ff # Unpacks to R = 1023, G = 1023, B = 1023, A = 3
-0xc00ffc00 # Unpacks to R = 1023, G = 1023, B = 1023, A = 3
-0xfff00000 # Unpacks to R = 1023, G = 1023, B = 1023, A = 3
-0xfffffc00 # Unpacks to R = 1023, G = 1023, B = 1023, A = 3
+0xc00003ff # Unpacks to R = 1023, G = 0, B = 0, A = 3
+0xc00ffc00 # Unpacks to R = 0, G = 1023, B = 0, A = 3
+0xfff00000 # Unpacks to R = 0, G = 0, B = 1023, A = 3
+0xfffffc00 # Unpacks to R = 0, G = 1023, B = 1023, A = 3
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE A8B8G8R8_SINT_PACK32 DATA
-0x01000001 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01000100 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01010000 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01010100 # Unpacks to R = 1, G = 1, B = 1, A = 1
+0x01000001 # Unpacks to R = 1, G = 0, B = 0, A = 1
+0x01000100 # Unpacks to R = 0, G = 1, B = 0, A = 1
+0x01010000 # Unpacks to R = 0, G = 0, B = 1, A = 1
+0x01010100 # Unpacks to R = 0, G = 1, B = 1, A = 1
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE A8B8G8R8_SNORM_PACK32 DATA
-0x7f00007f # Unpacks to R = 127, G = 127, B = 127, A = 127
-0x7f007f00 # Unpacks to R = 127, G = 127, B = 127, A = 127
-0x7f7f0000 # Unpacks to R = 127, G = 127, B = 127, A = 127
-0x7f7f7f00 # Unpacks to R = 127, G = 127, B = 127, A = 127
+0x7f00007f # Unpacks to R = 127, G = 0, B = 0, A = 127
+0x7f007f00 # Unpacks to R = 0, G = 127, B = 0, A = 127
+0x7f7f0000 # Unpacks to R = 0, G = 0, B = 127, A = 127
+0x7f7f7f00 # Unpacks to R = 0, G = 127, B = 127, A = 127
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE A8B8G8R8_UINT_PACK32 DATA
-0x01000001 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01000100 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01010000 # Unpacks to R = 1, G = 1, B = 1, A = 1
-0x01010100 # Unpacks to R = 1, G = 1, B = 1, A = 1
+0x01000001 # Unpacks to R = 1, G = 0, B = 0, A = 1
+0x01000100 # Unpacks to R = 0, G = 1, B = 0, A = 1
+0x01010000 # Unpacks to R = 0, G = 0, B = 1, A = 1
+0x01010100 # Unpacks to R = 0, G = 1, B = 1, A = 1
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE A8B8G8R8_UNORM_PACK32 DATA
-0xff0000ff # Unpacks to R = 255, G = 255, B = 255, A = 255
-0xff00ff00 # Unpacks to R = 255, G = 255, B = 255, A = 255
-0xffff0000 # Unpacks to R = 255, G = 255, B = 255, A = 255
-0xffffff00 # Unpacks to R = 255, G = 255, B = 255, A = 255
+0xff0000ff # Unpacks to R = 255, G = 0, B = 0, A = 255
+0xff00ff00 # Unpacks to R = 0, G = 255, B = 0, A = 255
+0xffff0000 # Unpacks to R = 0, G = 0, B = 255, A = 255
+0xffffff00 # Unpacks to R = 0, G = 255, B = 255, A = 255
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
END
BUFFER texel_buffer DATA_TYPE B10G11R11_UFLOAT_PACK32 DATA
-0x000003e0 # Unpacks to R = 1.0, G = 1.0, B = 1.0
-0x001f0000 # Unpacks to R = 1.0, G = 1.0, B = 1.0
-0x7c000000 # Unpacks to R = 1.0, G = 1.0, B = 1.0
-0x7c1f0000 # Unpacks to R = 1.0, G = 1.0, B = 1.0
+0x000003e0 # Unpacks to R = 1.0, G = 0.0, B = 0.0
+0x001f0000 # Unpacks to R = 0.0, G = 1.0, B = 0.0
+0x7c000000 # Unpacks to R = 0.0, G = 0.0, B = 1.0
+0x7c1f0000 # Unpacks to R = 0.0, G = 1.0, B = 1.0
END
BUFFER framebuffer FORMAT B8G8R8A8_UNORM
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE B8G8R8_SNORM DATA
+0x81 0x88 0x8f 0x88 0x8f 0x96 0x8f 0x96 0x9d 0x96 0x9d 0xa4
+0x9d 0xa4 0xab 0xa4 0xab 0xb2 0xab 0xb2 0xb9 0xb2 0xb9 0xc0
+0xb9 0xc0 0xc7 0xc0 0xc7 0xce 0xc7 0xce 0xd5 0xce 0xd5 0xdc
+0xd5 0xdc 0xe3 0xdc 0xe3 0xea 0xe3 0xea 0xf1 0xea 0xf1 0xf8
+0xf1 0xf8 0xff 0xf8 0xff 0x06 0xff 0x06 0x0d 0x06 0x0d 0x14
+0x0d 0x14 0x1b 0x14 0x1b 0x22 0x1b 0x22 0x29 0x22 0x29 0x30
+0x29 0x30 0x37 0x30 0x37 0x3e 0x37 0x3e 0x45 0x3e 0x45 0x4c
+0x45 0x4c 0x53 0x4c 0x53 0x5a 0x53 0x5a 0x61 0x5a 0x61 0x68
+0x61 0x68 0x6f 0x68 0x6f 0x76 0x6f 0x76 0x7d 0x76 0x7d 0x80
+0x7d 0x80 0x00 0x80 0x00 0x81 0x00 0x81 0x88
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 14 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 14 21 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 21 28 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 28 35 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 35 42 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 42 49 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 49 56 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 56 63 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 63 70 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 70 77 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 77 84 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 84 91 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 91 98 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 98 105 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 105 112 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 112 119 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 119 126 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 126 133 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 133 140 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 140 147 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 147 154 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 154 161 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 161 168 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 168 175 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 175 182 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 182 189 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 189 196 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 196 203 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 203 210 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 210 217 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 217 224 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 224 231 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 231 238 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 238 245 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 245 252 255 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 252 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 127 255 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 7 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE B8G8R8A8_SNORM DATA
+0x81 0x88 0x8f 0x96 0x88 0x8f 0x96 0x9d 0x8f 0x96 0x9d 0xa4
+0x96 0x9d 0xa4 0xab 0x9d 0xa4 0xab 0xb2 0xa4 0xab 0xb2 0xb9
+0xab 0xb2 0xb9 0xc0 0xb2 0xb9 0xc0 0xc7 0xb9 0xc0 0xc7 0xce
+0xc0 0xc7 0xce 0xd5 0xc7 0xce 0xd5 0xdc 0xce 0xd5 0xdc 0xe3
+0xd5 0xdc 0xe3 0xea 0xdc 0xe3 0xea 0xf1 0xe3 0xea 0xf1 0xf8
+0xea 0xf1 0xf8 0xff 0xf1 0xf8 0xff 0x06 0xf8 0xff 0x06 0x0d
+0xff 0x06 0x0d 0x14 0x06 0x0d 0x14 0x1b 0x0d 0x14 0x1b 0x22
+0x14 0x1b 0x22 0x29 0x1b 0x22 0x29 0x30 0x22 0x29 0x30 0x37
+0x29 0x30 0x37 0x3e 0x30 0x37 0x3e 0x45 0x37 0x3e 0x45 0x4c
+0x3e 0x45 0x4c 0x53 0x45 0x4c 0x53 0x5a 0x4c 0x53 0x5a 0x61
+0x53 0x5a 0x61 0x68 0x5a 0x61 0x68 0x6f 0x61 0x68 0x6f 0x76
+0x68 0x6f 0x76 0x7d 0x6f 0x76 0x7d 0x80 0x76 0x7d 0x80 0x00
+0x7d 0x80 0x00 0x81 0x80 0x00 0x81 0x88 0x00 0x81 0x88 0x8f
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 14 21 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 14 21 28 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 21 28 35 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 28 35 42 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 35 42 49 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 42 49 56 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 49 56 63 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 56 63 70 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 63 70 77 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 70 77 84 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 77 84 91 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 84 91 98 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 91 98 105 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 98 105 112 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 105 112 119 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 112 119 126 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 119 126 133 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 126 133 140 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 133 140 147 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 140 147 154 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 147 154 161 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 154 161 168 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 161 168 175 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 168 175 182 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 175 182 189 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 182 189 196 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 189 196 203 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 196 203 210 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 203 210 217 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 210 217 224 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 217 224 231 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 224 231 238 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 231 238 245 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 238 245 252 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 245 252 0 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 252 0 127 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 127 0 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 127 0 7 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 7 14 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 35) + vec4(1.0)) / vec4(2.0);
+ color_out.g = 0;
+ color_out.b = 0;
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R16_SNORM DATA
+0x8001 0x8800 0x8fff 0x97fe 0x9ffd 0xa7fc 0xaffb 0xb7fa 0xbff9 0xc7f8
+0xcff7 0xd7f6 0xdff5 0xe7f4 0xeff3 0xf7f2 0xfff1 0x07f0 0x0fef 0x17ee
+0x1fed 0x27ec 0x2feb 0x37ea 0x3fe9 0x47e8 0x4fe7 0x57e6 0x5fe5 0x67e4
+0x6fe3 0x77e2 0x7fe1 0x8000 0x0000
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 15 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 23 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 31 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 39 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 47 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 55 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 63 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 71 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 79 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 87 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 95 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 103 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 111 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 119 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 127 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 135 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 143 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 151 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 159 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 167 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 175 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 183 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 191 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 199 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 207 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 215 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 223 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 230 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 238 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 246 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 254 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 0 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 127 0 0 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 35) + vec4(1.0)) / vec4(2.0);
+ color_out.b = 0;
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R16G16_SNORM DATA
+0x8001 0x8800 0x8800 0x8fff 0x8fff 0x97fe 0x97fe 0x9ffd 0x9ffd 0xa7fc
+0xa7fc 0xaffb 0xaffb 0xb7fa 0xb7fa 0xbff9 0xbff9 0xc7f8 0xc7f8 0xcff7
+0xcff7 0xd7f6 0xd7f6 0xdff5 0xdff5 0xe7f4 0xe7f4 0xeff3 0xeff3 0xf7f2
+0xf7f2 0xfff1 0xfff1 0x07f0 0x07f0 0x0fef 0x0fef 0x17ee 0x17ee 0x1fed
+0x1fed 0x27ec 0x27ec 0x2feb 0x2feb 0x37ea 0x37ea 0x3fe9 0x3fe9 0x47e8
+0x47e8 0x4fe7 0x4fe7 0x57e6 0x57e6 0x5fe5 0x5fe5 0x67e4 0x67e4 0x6fe3
+0x6fe3 0x77e2 0x77e2 0x7fe1 0x7fe1 0x8000 0x8000 0x0000 0x0000 0x8001
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 15 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 15 23 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 23 31 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 31 39 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 39 47 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 47 55 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 55 63 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 63 71 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 71 79 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 79 87 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 87 95 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 95 103 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 103 111 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 111 119 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 119 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 127 135 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 135 143 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 143 151 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 151 159 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 159 167 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 167 175 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 175 183 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 183 191 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 191 199 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 199 207 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 207 215 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 215 223 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 223 230 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 230 238 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 238 246 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 246 254 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 254 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 0 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 127 0 0 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 35) + vec4(1.0)) / vec4(2.0);
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R16G16B16_SNORM DATA
+0x8001 0x8800 0x8fff 0x8800 0x8fff 0x97fe 0x8fff 0x97fe 0x9ffd 0x97fe 0x9ffd 0xa7fc
+0x9ffd 0xa7fc 0xaffb 0xa7fc 0xaffb 0xb7fa 0xaffb 0xb7fa 0xbff9 0xb7fa 0xbff9 0xc7f8
+0xbff9 0xc7f8 0xcff7 0xc7f8 0xcff7 0xd7f6 0xcff7 0xd7f6 0xdff5 0xd7f6 0xdff5 0xe7f4
+0xdff5 0xe7f4 0xeff3 0xe7f4 0xeff3 0xf7f2 0xeff3 0xf7f2 0xfff1 0xf7f2 0xfff1 0x07f0
+0xfff1 0x07f0 0x0fef 0x07f0 0x0fef 0x17ee 0x0fef 0x17ee 0x1fed 0x17ee 0x1fed 0x27ec
+0x1fed 0x27ec 0x2feb 0x27ec 0x2feb 0x37ea 0x2feb 0x37ea 0x3fe9 0x37ea 0x3fe9 0x47e8
+0x3fe9 0x47e8 0x4fe7 0x47e8 0x4fe7 0x57e6 0x4fe7 0x57e6 0x5fe5 0x57e6 0x5fe5 0x67e4
+0x5fe5 0x67e4 0x6fe3 0x67e4 0x6fe3 0x77e2 0x6fe3 0x77e2 0x7fe1 0x77e2 0x7fe1 0x8000
+0x7fe1 0x8000 0x0000 0x8000 0x0000 0x8001 0x0000 0x8001 0x8800
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 15 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 15 23 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 15 23 31 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 23 31 39 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 31 39 47 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 39 47 55 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 47 55 63 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 55 63 71 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 63 71 79 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 71 79 87 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 79 87 95 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 87 95 103 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 95 103 111 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 103 111 119 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 111 119 127 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 119 127 135 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 127 135 143 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 135 143 151 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 143 151 159 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 151 159 167 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 159 167 175 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 167 175 183 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 175 183 191 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 183 191 199 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 191 199 207 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 199 207 215 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 207 215 223 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 215 223 230 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 223 230 238 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 230 238 246 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 238 246 254 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 246 254 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 254 0 127 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 0 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 127 0 7 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 35) + vec4(1.0)) / vec4(2.0);
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R16G16B16A16_SNORM DATA
+0x8001 0x8800 0x8fff 0x97fe 0x8800 0x8fff 0x97fe 0x9ffd 0x8fff 0x97fe 0x9ffd 0xa7fc
+0x97fe 0x9ffd 0xa7fc 0xaffb 0x9ffd 0xa7fc 0xaffb 0xb7fa 0xa7fc 0xaffb 0xb7fa 0xbff9
+0xaffb 0xb7fa 0xbff9 0xc7f8 0xb7fa 0xbff9 0xc7f8 0xcff7 0xbff9 0xc7f8 0xcff7 0xd7f6
+0xc7f8 0xcff7 0xd7f6 0xdff5 0xcff7 0xd7f6 0xdff5 0xe7f4 0xd7f6 0xdff5 0xe7f4 0xeff3
+0xdff5 0xe7f4 0xeff3 0xf7f2 0xe7f4 0xeff3 0xf7f2 0xfff1 0xeff3 0xf7f2 0xfff1 0x07f0
+0xf7f2 0xfff1 0x07f0 0x0fef 0xfff1 0x07f0 0x0fef 0x17ee 0x07f0 0x0fef 0x17ee 0x1fed
+0x0fef 0x17ee 0x1fed 0x27ec 0x17ee 0x1fed 0x27ec 0x2feb 0x1fed 0x27ec 0x2feb 0x37ea
+0x27ec 0x2feb 0x37ea 0x3fe9 0x2feb 0x37ea 0x3fe9 0x47e8 0x37ea 0x3fe9 0x47e8 0x4fe7
+0x3fe9 0x47e8 0x4fe7 0x57e6 0x47e8 0x4fe7 0x57e6 0x5fe5 0x4fe7 0x57e6 0x5fe5 0x67e4
+0x57e6 0x5fe5 0x67e4 0x6fe3 0x5fe5 0x67e4 0x6fe3 0x77e2 0x67e4 0x6fe3 0x77e2 0x7fe1
+0x6fe3 0x77e2 0x7fe1 0x8000 0x77e2 0x7fe1 0x8000 0x0000 0x7fe1 0x8000 0x0000 0x8001
+0x8000 0x0000 0x8001 0x8800 0x0000 0x8001 0x8800 0x8fff
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 15 23 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 15 23 31 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 15 23 31 39 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 23 31 39 47 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 31 39 47 55 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 39 47 55 63 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 47 55 63 71 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 55 63 71 79 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 63 71 79 87 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 71 79 87 95 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 79 87 95 103 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 87 95 103 111 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 95 103 111 119 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 103 111 119 127 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 111 119 127 135 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 119 127 135 143 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 127 135 143 151 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 135 143 151 159 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 143 151 159 167 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 151 159 167 175 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 159 167 175 183 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 167 175 183 191 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 175 183 191 199 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 183 191 199 207 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 191 199 207 215 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 199 207 215 223 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 207 215 223 230 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 215 223 230 238 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 223 230 238 246 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 230 238 246 254 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 238 246 254 0 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 246 254 0 127 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 254 0 127 0 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 0 127 0 7 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 127 0 7 15 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+ color_out.g = 0;
+ color_out.b = 0;
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R8_SNORM DATA
+0x81 0x88 0x8f 0x96 0x9d 0xa4 0xab 0xb2 0xb9 0xc0
+0xc7 0xce 0xd5 0xdc 0xe3 0xea 0xf1 0xf8 0xff 0x06
+0x0d 0x14 0x1b 0x22 0x29 0x30 0x37 0x3e 0x45 0x4c
+0x53 0x5a 0x61 0x68 0x6f 0x76 0x7d 0x80 0x00
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 0 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+ color_out.b = 0;
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R8G8_SNORM DATA
+0x81 0x88 0x88 0x8f 0x8f 0x96 0x96 0x9d 0x9d 0xa4
+0xa4 0xab 0xab 0xb2 0xb2 0xb9 0xb9 0xc0 0xc0 0xc7
+0xc7 0xce 0xce 0xd5 0xd5 0xdc 0xdc 0xe3 0xe3 0xea
+0xea 0xf1 0xf1 0xf8 0xf8 0xff 0xff 0x06 0x06 0x0d
+0x0d 0x14 0x14 0x1b 0x1b 0x22 0x22 0x29 0x29 0x30
+0x30 0x37 0x37 0x3e 0x3e 0x45 0x45 0x4c 0x4c 0x53
+0x53 0x5a 0x5a 0x61 0x61 0x68 0x68 0x6f 0x6f 0x76
+0x76 0x7d 0x7d 0x80 0x80 0x00 0x00 0x81
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 14 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 21 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 28 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 35 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 42 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 49 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 56 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 63 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 70 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 77 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 84 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 91 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 98 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 105 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 112 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 119 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 126 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 133 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 140 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 147 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 154 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 161 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 168 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 175 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 182 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 189 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 196 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 203 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 210 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 217 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 224 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 231 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 238 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 245 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 252 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 0 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+ color_out.a = 1;
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R8G8B8_SNORM DATA
+0x81 0x88 0x8f 0x88 0x8f 0x96 0x8f 0x96 0x9d 0x96 0x9d 0xa4
+0x9d 0xa4 0xab 0xa4 0xab 0xb2 0xab 0xb2 0xb9 0xb2 0xb9 0xc0
+0xb9 0xc0 0xc7 0xc0 0xc7 0xce 0xc7 0xce 0xd5 0xce 0xd5 0xdc
+0xd5 0xdc 0xe3 0xdc 0xe3 0xea 0xe3 0xea 0xf1 0xea 0xf1 0xf8
+0xf1 0xf8 0xff 0xf8 0xff 0x06 0xff 0x06 0x0d 0x06 0x0d 0x14
+0x0d 0x14 0x1b 0x14 0x1b 0x22 0x1b 0x22 0x29 0x22 0x29 0x30
+0x29 0x30 0x37 0x30 0x37 0x3e 0x37 0x3e 0x45 0x3e 0x45 0x4c
+0x45 0x4c 0x53 0x4c 0x53 0x5a 0x53 0x5a 0x61 0x5a 0x61 0x68
+0x61 0x68 0x6f 0x68 0x6f 0x76 0x6f 0x76 0x7d 0x76 0x7d 0x80
+0x7d 0x80 0x00 0x80 0x00 0x81 0x00 0x81 0x88
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 14 255 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 14 21 255 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 21 28 255 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 28 35 255 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 35 42 255 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 42 49 255 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 49 56 255 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 56 63 255 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 63 70 255 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 70 77 255 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 77 84 255 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 84 91 255 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 91 98 255 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 98 105 255 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 105 112 255 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 112 119 255 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 119 126 255 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 126 133 255 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 133 140 255 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 140 147 255 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 147 154 255 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 154 161 255 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 161 168 255 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 168 175 255 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 175 182 255 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 182 189 255 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 189 196 255 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 196 203 255 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 203 210 255 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 210 217 255 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 217 224 255 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 224 231 255 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 231 238 255 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 238 245 255 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 245 252 255 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 252 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 127 255 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 127 0 255 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 7 255 TOLERANCE 1
+
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER vertex vert_shader PASSTHROUGH
+SHADER fragment frag_shader GLSL
+#version 430
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) samplerBuffer texels;
+
+void main()
+{
+ color_out = (texelFetch(texels, int(gl_FragCoord.x) % 39) + vec4(1.0)) / vec4(2.0);
+
+}
+END
+
+BUFFER texel_buffer DATA_TYPE R8G8B8A8_SNORM DATA
+0x81 0x88 0x8f 0x96 0x88 0x8f 0x96 0x9d 0x8f 0x96 0x9d 0xa4
+0x96 0x9d 0xa4 0xab 0x9d 0xa4 0xab 0xb2 0xa4 0xab 0xb2 0xb9
+0xab 0xb2 0xb9 0xc0 0xb2 0xb9 0xc0 0xc7 0xb9 0xc0 0xc7 0xce
+0xc0 0xc7 0xce 0xd5 0xc7 0xce 0xd5 0xdc 0xce 0xd5 0xdc 0xe3
+0xd5 0xdc 0xe3 0xea 0xdc 0xe3 0xea 0xf1 0xe3 0xea 0xf1 0xf8
+0xea 0xf1 0xf8 0xff 0xf1 0xf8 0xff 0x06 0xf8 0xff 0x06 0x0d
+0xff 0x06 0x0d 0x14 0x06 0x0d 0x14 0x1b 0x0d 0x14 0x1b 0x22
+0x14 0x1b 0x22 0x29 0x1b 0x22 0x29 0x30 0x22 0x29 0x30 0x37
+0x29 0x30 0x37 0x3e 0x30 0x37 0x3e 0x45 0x37 0x3e 0x45 0x4c
+0x3e 0x45 0x4c 0x53 0x45 0x4c 0x53 0x5a 0x4c 0x53 0x5a 0x61
+0x53 0x5a 0x61 0x68 0x5a 0x61 0x68 0x6f 0x61 0x68 0x6f 0x76
+0x68 0x6f 0x76 0x7d 0x6f 0x76 0x7d 0x80 0x76 0x7d 0x80 0x00
+0x7d 0x80 0x00 0x81 0x80 0x00 0x81 0x88 0x00 0x81 0x88 0x8f
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline
+ ATTACH vert_shader
+ ATTACH frag_shader
+ BIND BUFFER texel_buffer AS uniform_texel_buffer DESCRIPTOR_SET 0 BINDING 0
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+END
+
+CLEAR_COLOR pipeline 0 0 255 255
+CLEAR pipeline
+RUN pipeline DRAW_RECT POS 0 0 SIZE 100 128
+
+EXPECT framebuffer IDX 0 0 SIZE 1 128 EQ_RGBA 0 7 14 21 TOLERANCE 1
+EXPECT framebuffer IDX 1 0 SIZE 1 128 EQ_RGBA 7 14 21 28 TOLERANCE 1
+EXPECT framebuffer IDX 2 0 SIZE 1 128 EQ_RGBA 14 21 28 35 TOLERANCE 1
+EXPECT framebuffer IDX 3 0 SIZE 1 128 EQ_RGBA 21 28 35 42 TOLERANCE 1
+EXPECT framebuffer IDX 4 0 SIZE 1 128 EQ_RGBA 28 35 42 49 TOLERANCE 1
+EXPECT framebuffer IDX 5 0 SIZE 1 128 EQ_RGBA 35 42 49 56 TOLERANCE 1
+EXPECT framebuffer IDX 6 0 SIZE 1 128 EQ_RGBA 42 49 56 63 TOLERANCE 1
+EXPECT framebuffer IDX 7 0 SIZE 1 128 EQ_RGBA 49 56 63 70 TOLERANCE 1
+EXPECT framebuffer IDX 8 0 SIZE 1 128 EQ_RGBA 56 63 70 77 TOLERANCE 1
+EXPECT framebuffer IDX 9 0 SIZE 1 128 EQ_RGBA 63 70 77 84 TOLERANCE 1
+EXPECT framebuffer IDX 10 0 SIZE 1 128 EQ_RGBA 70 77 84 91 TOLERANCE 1
+EXPECT framebuffer IDX 11 0 SIZE 1 128 EQ_RGBA 77 84 91 98 TOLERANCE 1
+EXPECT framebuffer IDX 12 0 SIZE 1 128 EQ_RGBA 84 91 98 105 TOLERANCE 1
+EXPECT framebuffer IDX 13 0 SIZE 1 128 EQ_RGBA 91 98 105 112 TOLERANCE 1
+EXPECT framebuffer IDX 14 0 SIZE 1 128 EQ_RGBA 98 105 112 119 TOLERANCE 1
+EXPECT framebuffer IDX 15 0 SIZE 1 128 EQ_RGBA 105 112 119 126 TOLERANCE 1
+EXPECT framebuffer IDX 16 0 SIZE 1 128 EQ_RGBA 112 119 126 133 TOLERANCE 1
+EXPECT framebuffer IDX 17 0 SIZE 1 128 EQ_RGBA 119 126 133 140 TOLERANCE 1
+EXPECT framebuffer IDX 18 0 SIZE 1 128 EQ_RGBA 126 133 140 147 TOLERANCE 1
+EXPECT framebuffer IDX 19 0 SIZE 1 128 EQ_RGBA 133 140 147 154 TOLERANCE 1
+EXPECT framebuffer IDX 20 0 SIZE 1 128 EQ_RGBA 140 147 154 161 TOLERANCE 1
+EXPECT framebuffer IDX 21 0 SIZE 1 128 EQ_RGBA 147 154 161 168 TOLERANCE 1
+EXPECT framebuffer IDX 22 0 SIZE 1 128 EQ_RGBA 154 161 168 175 TOLERANCE 1
+EXPECT framebuffer IDX 23 0 SIZE 1 128 EQ_RGBA 161 168 175 182 TOLERANCE 1
+EXPECT framebuffer IDX 24 0 SIZE 1 128 EQ_RGBA 168 175 182 189 TOLERANCE 1
+EXPECT framebuffer IDX 25 0 SIZE 1 128 EQ_RGBA 175 182 189 196 TOLERANCE 1
+EXPECT framebuffer IDX 26 0 SIZE 1 128 EQ_RGBA 182 189 196 203 TOLERANCE 1
+EXPECT framebuffer IDX 27 0 SIZE 1 128 EQ_RGBA 189 196 203 210 TOLERANCE 1
+EXPECT framebuffer IDX 28 0 SIZE 1 128 EQ_RGBA 196 203 210 217 TOLERANCE 1
+EXPECT framebuffer IDX 29 0 SIZE 1 128 EQ_RGBA 203 210 217 224 TOLERANCE 1
+EXPECT framebuffer IDX 30 0 SIZE 1 128 EQ_RGBA 210 217 224 231 TOLERANCE 1
+EXPECT framebuffer IDX 31 0 SIZE 1 128 EQ_RGBA 217 224 231 238 TOLERANCE 1
+EXPECT framebuffer IDX 32 0 SIZE 1 128 EQ_RGBA 224 231 238 245 TOLERANCE 1
+EXPECT framebuffer IDX 33 0 SIZE 1 128 EQ_RGBA 231 238 245 252 TOLERANCE 1
+EXPECT framebuffer IDX 34 0 SIZE 1 128 EQ_RGBA 238 245 252 0 TOLERANCE 1
+EXPECT framebuffer IDX 35 0 SIZE 1 128 EQ_RGBA 245 252 0 127 TOLERANCE 1
+EXPECT framebuffer IDX 36 0 SIZE 1 128 EQ_RGBA 252 0 127 0 TOLERANCE 1
+EXPECT framebuffer IDX 37 0 SIZE 1 128 EQ_RGBA 0 127 0 7 TOLERANCE 1
+EXPECT framebuffer IDX 38 0 SIZE 1 128 EQ_RGBA 127 0 7 14 TOLERANCE 1
+
for (auto req : m_imageRequirements)
checkImageSupport(ctx.getInstanceInterface(), ctx.getPhysicalDevice(), req);
+
+ for (auto req : m_bufferRequirements)
+ {
+ vk::VkFormatProperties prop;
+ ctx.getInstanceInterface().getPhysicalDeviceFormatProperties(ctx.getPhysicalDevice(), req.m_format, &prop);
+
+ if ((req.m_featureFlags & prop.bufferFeatures) != req.m_featureFlags)
+ {
+ TCU_THROW(NotSupportedError, "Buffer format doesn't support required feature flags");
+ }
+ }
}
class Delegate : public amber::Delegate
m_imageRequirements.push_back(info);
}
+void AmberTestCase::addBufferRequirement (BufferRequirement req)
+{
+ m_bufferRequirements.push_back(req);
+}
+
} // cts_amber
} // vkt
namespace cts_amber
{
+struct BufferRequirement
+{
+ vk::VkFormat m_format;
+ vk::VkFormatFeatureFlags m_featureFlags;
+};
+
class AmberTestInstance : public TestInstance
{
public:
virtual tcu::TestStatus iterate (void);
private:
- amber::Recipe* m_recipe;
+ amber::Recipe* m_recipe;
};
class AmberTestCase : public TestCase
void addRequirement(const std::string& requirement);
void addImageRequirement(vk::VkImageCreateInfo info);
+ void addBufferRequirement(BufferRequirement req);
private:
bool parse (const std::string& readFilename);
std::set<std::string> m_required_features;
std::vector<vk::VkImageCreateInfo> m_imageRequirements;
+ std::vector<BufferRequirement> m_bufferRequirements;
};
AmberTestCase* createAmberTestCase (tcu::TestContext& testCtx,
const char* category,
const std::string& filename,
const std::vector<std::string> requirements = std::vector<std::string>(),
- const std::vector<vk::VkImageCreateInfo> imageRequirements = std::vector<vk::VkImageCreateInfo>());
+ const std::vector<vk::VkImageCreateInfo> imageRequirements = std::vector<vk::VkImageCreateInfo>(),
+ const std::vector<BufferRequirement> bufferRequirements = std::vector<BufferRequirement>());
void createAmberTestsFromIndexFile (tcu::TestContext& testCtx,
tcu::TestCaseGroup* group,
const char* category,
const std::string& filename,
const std::vector<std::string> requirements,
- const std::vector<vk::VkImageCreateInfo> imageRequirements)
+ const std::vector<vk::VkImageCreateInfo> imageRequirements,
+ const std::vector<BufferRequirement> bufferRequirements)
{
// shader_test files are saved in <path>/external/vulkancts/data/vulkan/amber/<categoryname>/
for (auto req : imageRequirements)
testCase->addImageRequirement(req);
+ for (auto req : bufferRequirements)
+ testCase->addBufferRequirement(req);
+
return testCase;
}
}
}
+ // .snorm
+ {
+ tcu::TestCaseGroup* const snorm = new tcu::TestCaseGroup(testCtx, "snorm", "Test uniform texel buffer with SNORM formats");
+ static const char dataDir[] = "texture/texel_buffer/uniform/snorm";
+
+ static const struct {
+ std::string testName;
+ bool mandatoryFormat;
+ VkFormat format;
+ } cases[] =
+ {
+ { "b8g8r8-snorm", false, VK_FORMAT_B8G8R8_SNORM },
+ { "b8g8r8a8-snorm", false, VK_FORMAT_B8G8R8A8_SINT },
+ { "r16-snorm", false, VK_FORMAT_R16_SNORM },
+ { "r16g16-snorm", false, VK_FORMAT_R16G16_SNORM },
+ { "r16g16b16-snorm", false, VK_FORMAT_R16G16B16_SNORM },
+ { "r16g16b16a16-snorm", false, VK_FORMAT_R16G16B16A16_SNORM },
+ { "r8-snorm", true, VK_FORMAT_R8_SNORM },
+ { "r8g8-snorm", true, VK_FORMAT_R8G8_SNORM },
+ { "r8g8b8-snorm", false, VK_FORMAT_R8G8B8_SNORM },
+ { "r8g8b8a8-snorm", false, VK_FORMAT_R8G8B8A8_SNORM }
+ };
+
+ uniform->addChild(snorm);
+
+ for (const auto& c : cases)
+ {
+ const std::string fileName = c.testName + ".amber";
+ std::vector<cts_amber::BufferRequirement> bufferRequirements;
+
+ if (!c.mandatoryFormat)
+ bufferRequirements.push_back({c.format, VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT});
+
+ cts_amber::AmberTestCase* testCase = cts_amber::createAmberTestCase(testCtx, c.testName.c_str(), "",
+ dataDir, fileName,
+ std::vector<std::string>(),
+ std::vector<vk::VkImageCreateInfo>(),
+ bufferRequirements);
+
+ snorm->addChild(testCase);
+ }
+ }
+
return uniform.release();
}
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-uint-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.a8b8g8r8-unorm-pack32
dEQP-VK.texture.texel_buffer.uniform.packed.b10g11r11-ufloat-pack32
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.b8g8r8a8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r16g16b16a16-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8-snorm
+dEQP-VK.texture.texel_buffer.uniform.snorm.r8g8b8a8-snorm
dEQP-VK.texture.multisample.atomic.storage_image_r32i
dEQP-VK.texture.multisample.atomic.storage_image_r32ui
dEQP-VK.texture.texel_offset.texel_offset