| #version 450 |
| #extension GL_ARB_gpu_shader_int64 : require |
| layout(local_size_x = 1) in; |
| |
| struct M0 |
| { |
| int64_t v; |
| i64vec2 b[2]; |
| uint64_t c; |
| uint64_t d[5]; |
| }; |
| |
| struct SSBO0_Type |
| { |
| i64vec4 a; |
| M0 m0; |
| }; |
| |
| struct SSBO1_Type |
| { |
| u64vec4 b; |
| M0 m0; |
| }; |
| |
| struct SSBO2_Type |
| { |
| int64_t a[4]; |
| i64vec2 b[4]; |
| }; |
| |
| struct SSBO3_Type |
| { |
| int64_t a[4]; |
| i64vec2 b[4]; |
| }; |
| |
| layout(set = 0, binding = 0, std430) buffer SSBO |
| { |
| int s32; |
| uint u32; |
| }; |
| |
| void main() |
| { |
| SSBO0_Type ssbo_0; |
| SSBO1_Type ssbo_1; |
| SSBO2_Type ssbo_2; |
| SSBO3_Type ssbo_3; |
| |
| ssbo_0.a += i64vec4(10, 20, 30, 40); |
| ssbo_1.b += u64vec4(999999999999999999ul, 8888888888888888ul, 77777777777777777ul, 6666666666666666ul); |
| ssbo_0.a += 20; |
| ssbo_0.a = abs(ssbo_0.a + i64vec4(ssbo_1.b)); |
| |
| ssbo_0.a++; |
| ssbo_1.b++; |
| ssbo_0.a--; |
| ssbo_1.b--; |
| |
| ssbo_2.a[0] += 1l; |
| ssbo_3.a[0] += 2l; |
| |
| s32 = int(ssbo_0.a.x + ssbo_1.b.y + ssbo_2.a[1] + ssbo_3.a[2]); |
| u32 = uint(ssbo_0.a.y + ssbo_1.b.z + ssbo_2.a[0] + ssbo_3.a[1]); |
| } |