xref: /aosp_15_r20/external/deqp/external/vulkancts/data/vulkan/amber/texture/texel_offset/texel_offset.amber (revision 35238bce31c2a825756842865a792f8cf7f89930)
1#!amber
2
3SHADER vertex vert_shader PASSTHROUGH
4
5SHADER fragment frag_setup GLSL
6#version 430
7
8layout(location = 0) out vec4 result;
9
10void main() {
11  result = vec4(floor(gl_FragCoord.x) / 255.0f, floor(gl_FragCoord.y) / 255.0f, 0, 0);
12}
13END
14
15SHADER fragment frag_shader GLSL
16#version 430
17
18layout(binding = 0) uniform sampler2D tex;
19
20layout(location = 0) out vec4 result;
21
22void main() {
23  vec2 base = floor(gl_FragCoord.xy) / 255.0f;
24  uint mask = 0;
25  mask |= textureOffset(tex, base, ivec2(0, -1)).g < base.y ? 1 : 0;
26  mask |= textureOffset(tex, base, ivec2(0, 1)).g > base.y ? 2 : 0;
27  mask |= textureOffset(tex, base, ivec2(-1, 0)).r < base.x ? 4 : 0;
28  mask |= textureOffset(tex, base, ivec2(1, 0)).r > base.x ? 8 : 0;
29  result = vec4(mask/255.0f, 0, 0, 0);
30}
31END
32
33IMAGE texture FORMAT R8G8B8A8_UNORM DIM_2D WIDTH 256 HEIGHT 256
34SAMPLER sampler
35
36PIPELINE graphics setup
37  ATTACH vert_shader
38  ATTACH frag_setup
39
40  BIND BUFFER texture AS color LOCATION 0
41  FRAMEBUFFER_SIZE 256 256
42END
43
44RUN setup DRAW_RECT POS 0 0 SIZE 256 256
45
46BUFFER framebuffer FORMAT R8G8B8A8_UNORM
47
48PIPELINE graphics pipeline
49  ATTACH vert_shader
50  ATTACH frag_shader
51
52  BIND BUFFER texture AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
53  BIND BUFFER framebuffer AS color LOCATION 0
54  FRAMEBUFFER_SIZE 256 256
55END
56
57RUN pipeline DRAW_RECT POS 0 0 SIZE 256 256
58EXPECT framebuffer IDX 1 1 SIZE 254 254 EQ_RGBA 15 0 0 0
59