Add support for GL_EXT_buffer_reference2
This commit is contained in:
parent
86c72c9486
commit
758c93364c
12 changed files with 553 additions and 61 deletions
59
Test/spv.bufferhandle18.frag
Normal file
59
Test/spv.bufferhandle18.frag
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#version 450
|
||||
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
|
||||
#extension GL_EXT_buffer_reference2 : enable
|
||||
#extension GL_EXT_scalar_block_layout : enable
|
||||
|
||||
layout(buffer_reference, buffer_reference_align = 8) buffer T1 {
|
||||
int x;
|
||||
bool y;
|
||||
};
|
||||
layout(buffer_reference, buffer_reference_align = 64) buffer T2 {
|
||||
int x;
|
||||
};
|
||||
|
||||
const int s = int(uint64_t(T1(T2(uint64_t(3)))));
|
||||
int x[s];
|
||||
const uint64_t t = uint64_t(true ? T2(uint64_t(10)) : T2(uint64_t(11)));
|
||||
|
||||
|
||||
#define sizeof(T) (uint64_t(T(uint64_t(0))+1))
|
||||
|
||||
const uint64_t s2 = sizeof(T1);
|
||||
uint buf[int(s2)];
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
T1 a = T1(uint64_t(4)), b = T1(uint64_t(5));
|
||||
T1 c = true ? a : b;
|
||||
T1 d = (a,b);
|
||||
T1 e = true ? T1(uint64_t(6)) : T1(uint64_t(7));
|
||||
T1 f = a.y ? T1(uint64_t(8)) : T1(uint64_t(9));
|
||||
|
||||
f[3].x = 1;
|
||||
(f+5).x = 1;
|
||||
|
||||
T1 arr[2] = {a, f};
|
||||
arr[1][7].x = 1;
|
||||
int i;
|
||||
arr[i][i].x = 1;
|
||||
// Since we don't distinguish between "pointer" and "reference" type,
|
||||
// a reference type can have [] applied to it repeatedly and it has
|
||||
// the effect of adding up the indices.
|
||||
arr[i][i][i][i][i][i][i].x = 1;
|
||||
|
||||
T1 j;
|
||||
j = j+1;
|
||||
j = j-2;
|
||||
j += 3;
|
||||
j -= 4;
|
||||
j = 5+j;
|
||||
T1 k = j + 6;
|
||||
int64_t x = k - j;
|
||||
uint64_t y = sizeof(T1);
|
||||
k = k + (-1);
|
||||
|
||||
T2 m;
|
||||
m = m+1;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue