mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-05 11:45:54 +00:00
Allow the resolver to understand builtin structures, like __frexp_result_f16. This allows backend transforms to declare the types, even if they're "untypable" by the user. Bug: chromium:1430309 Change-Id: I392709118182a058f737ccf1b7b46fc6b0b7264d Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/129482 Kokoro: Ben Clayton <bclayton@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com>
48 lines
1.0 KiB
GLSL
48 lines
1.0 KiB
GLSL
#version 310 es
|
|
precision highp float;
|
|
|
|
struct atomic_compare_exchange_result_i32 {
|
|
int old_value;
|
|
bool exchanged;
|
|
};
|
|
|
|
|
|
bool tint_discarded = false;
|
|
struct tint_symbol_1 {
|
|
int old_value;
|
|
bool exchanged;
|
|
};
|
|
|
|
layout(location = 0) out int value;
|
|
layout(binding = 0, std430) buffer a_block_ssbo {
|
|
int inner;
|
|
} a;
|
|
|
|
int foo() {
|
|
tint_discarded = true;
|
|
int x = 0;
|
|
tint_symbol_1 tint_symbol = tint_symbol_1(0, false);
|
|
if (!(tint_discarded)) {
|
|
atomic_compare_exchange_result_i32 atomic_compare_result;
|
|
atomic_compare_result.old_value = atomicCompSwap(a.inner, 0, 1);
|
|
atomic_compare_result.exchanged = atomic_compare_result.old_value == 0;
|
|
atomic_compare_exchange_result_i32 tint_symbol_2 = atomic_compare_result;
|
|
tint_symbol.old_value = tint_symbol_2.old_value;
|
|
tint_symbol.exchanged = tint_symbol_2.exchanged;
|
|
}
|
|
tint_symbol_1 result = tint_symbol;
|
|
if (result.exchanged) {
|
|
x = result.old_value;
|
|
}
|
|
return x;
|
|
}
|
|
|
|
void main() {
|
|
int inner_result = foo();
|
|
value = inner_result;
|
|
if (tint_discarded) {
|
|
discard;
|
|
}
|
|
return;
|
|
}
|