writer/hlsl: Implement invariant attribute
Bug: tint:772 Change-Id: I228cd01b1e6b93ad5a5f4eacd0b495b3bcb3508f Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57645 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Auto-Submit: James Price <jrprice@google.com>
This commit is contained in:
parent
af6fc5f5d9
commit
8d33b8593c
|
@ -3127,6 +3127,11 @@ bool GeneratorImpl::EmitStructType(const sem::Struct* str) {
|
||||||
}
|
}
|
||||||
pre += mod;
|
pre += mod;
|
||||||
|
|
||||||
|
} else if (deco->Is<ast::InvariantDecoration>()) {
|
||||||
|
// Note: `precise` is not exactly the same as `invariant`, but is
|
||||||
|
// stricter and therefore provides the necessary guarantees.
|
||||||
|
// See discussion here: https://github.com/gpuweb/gpuweb/issues/893
|
||||||
|
pre += "precise ";
|
||||||
} else if (!deco->IsAnyOf<ast::StructMemberAlignDecoration,
|
} else if (!deco->IsAnyOf<ast::StructMemberAlignDecoration,
|
||||||
ast::StructMemberSizeDecoration>()) {
|
ast::StructMemberSizeDecoration>()) {
|
||||||
TINT_ICE(Writer, diagnostics_)
|
TINT_ICE(Writer, diagnostics_)
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
SKIP: FAILED
|
struct tint_symbol {
|
||||||
|
precise float4 value : SV_Position;
|
||||||
../../src/writer/hlsl/generator_impl.cc:3056 internal compiler error: unhandled struct member attribute: invariant
|
};
|
||||||
********************************************************************
|
|
||||||
* The tint shader compiler has encountered an unexpected error. *
|
|
||||||
* *
|
|
||||||
* Please help us fix this issue by submitting a bug report at *
|
|
||||||
* crbug.com/tint with the source program that triggered the bug. *
|
|
||||||
********************************************************************
|
|
||||||
|
|
||||||
|
tint_symbol main() {
|
||||||
|
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
||||||
|
return tint_symbol_1;
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
SKIP: FAILED
|
struct Out {
|
||||||
|
float4 pos;
|
||||||
../../src/writer/hlsl/generator_impl.cc:3056 internal compiler error: unhandled struct member attribute: invariant
|
};
|
||||||
********************************************************************
|
struct tint_symbol {
|
||||||
* The tint shader compiler has encountered an unexpected error. *
|
precise float4 pos : SV_Position;
|
||||||
* *
|
};
|
||||||
* Please help us fix this issue by submitting a bug report at *
|
|
||||||
* crbug.com/tint with the source program that triggered the bug. *
|
|
||||||
********************************************************************
|
|
||||||
|
|
||||||
|
tint_symbol main() {
|
||||||
|
const Out tint_symbol_1 = (Out)0;
|
||||||
|
const tint_symbol tint_symbol_2 = {tint_symbol_1.pos};
|
||||||
|
return tint_symbol_2;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue