SPIRV-Cross/samples/cpp/atomics.comp

33 lines
633 B
Plaintext
Raw Normal View History

2021-05-08 08:24:34 +00:00
// Copyright 2016-2021 The Khronos Group Inc.
// SPDX-License-Identifier: Apache-2.0
2016-05-25 07:40:02 +00:00
#version 310 es
layout(local_size_x = 64) in;
layout(set = 0, binding = 0, std430) readonly buffer SSBO0
{
float inputs[];
};
layout(set = 0, binding = 1, std430) writeonly buffer SSBO1
{
float outputs[];
};
layout(set = 0, binding = 2, std430) buffer SSBO2
{
uint counter;
};
void main()
{
// Builds a tightly packed list of all values less than 10.0.
// The output order is random.
float value = inputs[gl_GlobalInvocationID.x];
if (value < 10.0)
{
uint output_index = atomicAdd(counter, 1u);
outputs[output_index] = value;
}
}