mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-03 10:45:36 +00:00
We cannot explicitly name the result type of this builtin, so we have to redeclare it manually. Fixed: oss-fuzz:53347, oss-fuzz:53343 Change-Id: I23816b8b35eb20ae91472143ab30668b573d65bf Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110160 Commit-Queue: James Price <jrprice@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Auto-Submit: James Price <jrprice@google.com>
48 lines
1.0 KiB
GLSL
48 lines
1.0 KiB
GLSL
#version 310 es
|
|
precision mediump float;
|
|
|
|
struct atomic_compare_exchange_resulti32 {
|
|
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_resulti32 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_resulti32 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;
|
|
}
|