Revision control

++ #version 440
++
++ layout ( local_size_x = 1, local_size_y = 1, local_size_z = 1 ) in;
++
++ layout ( std430, binding = 0) buffer Buffer430
++ {
++ float _float[];
++ }buffer430;
++
++ layout ( std140, binding = 1 ) coherent buffer Buffer140
++ {
++ float _float[];
++ }buffer140;
++
++ layout ( std430, binding = 2 ) volatile writeonly buffer BufferWriteOnly430
++ {
++ vec2 _vec2[];
++ }bufferWriteOnly430;
++
++ layout ( std140, binding = 3 ) restrict writeonly buffer BufferWriteOnly140
++ {
++ vec2 _vec2[];
++ }bufferWriteOnly140;
++
++ layout ( std430, binding = 4 ) readonly buffer BufferReadOnly430
++ {
++ vec3 _vec3[];
++ }bufferReadOnly430;
++
++ layout ( std140, binding = 5 ) coherent readonly buffer BufferReadOnly140
++ {
++ vec3 _vec3[];
++ }bufferReadOnly140;
++
++ layout ( std430, binding = 6 ) volatile readonly writeonly buffer BufferReadOnlyWriteOnly430
++ {
++ vec4 _vec4[];
++ }bufferReadOnlyWriteOnly430;
++
++ layout ( std140, binding = 7 ) restrict readonly writeonly buffer BufferReadOnlyWriteOnly140
++ {
++ vec4 _vec4[];
++ }bufferReadOnlyWriteOnly140;
++
++ void main()
++ {
++ buffer430._float[0] = 0.0f;
++ buffer140._float[1] = 1.0f;
++ bufferWriteOnly430._vec2[0] = vec2(2.0f, 3.0f);
++ bufferWriteOnly140._vec2[0] = vec2(4.0f, 5.0f);
++ vec3 a = bufferReadOnly430._vec3[0];
++ vec3 b = bufferReadOnly140._vec3[0];
++ int c = bufferReadOnlyWriteOnly430._vec4.length();
++ int d = bufferReadOnlyWriteOnly140._vec4.length();
++ }