Parser: Add 64-bit type conversion for specialization constant.

This commit is contained in:
Rex Xu 2016-09-05 16:10:14 +08:00
parent 7d01bd6f0b
commit 64bcfdb632
8 changed files with 183 additions and 96 deletions

View file

@ -225,4 +225,37 @@ void builtinFuncs()
// notEqual()
bv = notEqual(u64v, u64vec3(u64));
bv.xy = notEqual(i64v, i64vec2(i64));
}
}
// Type conversion for specialization constant
layout(constant_id = 100) const int64_t si64 = -10L;
layout(constant_id = 101) const uint64_t su64 = 20UL;
layout(constant_id = 102) const int si = -5;
layout(constant_id = 103) const uint su = 4;
layout(constant_id = 104) const bool sb = true;
// bool <-> int64/uint64
const bool i64_to_b = bool(si64);
const bool u64_to_b = bool(su64);
const int64_t b_to_i64 = int64_t(sb);
const uint64_t b_to_u64 = uint64_t(sb);
// int <-> int64
const int i64_to_i = int(si64);
const int64_t i_to_i64 = int64_t(si);
// uint <-> uint64
const uint u64_to_u = uint(su64);
const uint64_t u_to_u64 = uint64_t(su);
// int64 <-> uint64
const int64_t u64_to_i64 = int64_t(su64);
const uint64_t i64_to_u64 = uint64_t(si64);
// int <-> uint64
const int u64_to_i = int(su64);
const uint64_t i_to_u64 = uint64_t(si);
// uint <-> int64
const uint i64_to_u = uint(si64);
const int64_t u_to_i64 = int64_t(su);