#version 450 #extension GL_EXT_abort : require #extension GL_EXT_scalar_block_layout : require layout(local_size_x = 1) in; layout(scalar, set = 0, binding = 0) buffer Data { int i; uint u; float f; vec4 v4; ivec3 v3; uvec2 v2; } data; // The same parameter list as spv.shader.abort.args.vec_mixed.comp, but with scalar // block layout requested for the buffer. The abort message is packed with scalar // rules either way, so the two shaders must produce identical message offsets: the // message layout does not depend on how the rest of the shader is laid out. void main() { abortEXT("mixed: %d %v4f %u %v3i %f %v2u", data.i, data.v4, data.u, data.v3, data.f, data.v2); }