blob: 925840727903c7d4af27b1ca31f6c1aba9fa68d7 [file] [log] [blame]
#!amber
SHADER compute fill GLSL
#version 450
layout(set=0, binding=0, rgba32ui) uniform uimage2D im;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
ivec2 coord = ivec2(gl_GlobalInvocationID.xy);
uvec4 data = uvec4(gl_GlobalInvocationID.x,
3,
gl_GlobalInvocationID.x + gl_GlobalInvocationID.y,
gl_GlobalInvocationID.y);
imageStore(im, coord, data);
}
END
SHADER compute read_imagef OPENCL-C
kernel void foo(read_only image2d_t image, global uint4* out) {
int gid_x = get_global_id(0);
int gid_y = get_global_id(1);
int linear = 2 * gid_y + gid_x;
int2 coord = (int2)(gid_x, gid_y);
out[linear] = read_imageui(image, coord);
}
END
BUFFER texture DATA_TYPE vec4<uint32> WIDTH 2 HEIGHT 2 FILL 4
BUFFER out_buf DATA_TYPE vec4<uint32> DATA
2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
END
PIPELINE compute read_pipe
ATTACH read_imagef ENTRY_POINT foo
BIND BUFFER out_buf KERNEL ARG_NAME out
BIND BUFFER texture KERNEL ARG_NAME image
END
PIPELINE compute fill_pipe
ATTACH fill
BIND BUFFER texture AS storage_image DESCRIPTOR_SET 0 BINDING 0
END
RUN fill_pipe 2 2 1
RUN read_pipe 2 2 1
EXPECT out_buf IDX 0 EQ 0 3 0 0
EXPECT out_buf IDX 16 EQ 1 3 1 0
EXPECT out_buf IDX 32 EQ 0 3 1 1
EXPECT out_buf IDX 48 EQ 1 3 2 1