#version 450 #extension GL_EXT_buffer_reference : require layout(local_size_x = 1) in; layout(std430, buffer_reference, buffer_reference_align = 8) readonly buffer src_predicate_t { uvec2 data; }; layout(std430, buffer_reference, buffer_reference_align = 4) writeonly buffer dst_predicate_t { uint data; }; layout(push_constant) uniform u_info_t { src_predicate_t src; dst_predicate_t dst; bool invert; }; void main() { dst.data = (all(equal(src.data, 0u.xx)) != invert) ? 0u : 1u; }