diff options
| author | 2021-04-15 22:46:11 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:27 -0400 | |
| commit | 183855e396cc6918d36fbf3e38ea426e934b4e3e (patch) | |
| tree | a665794753520c09a1d34d8a086352894ec1cb72 /src/shader_recompiler/frontend/ir/value.cpp | |
| parent | shader: Mark atomic instructions as writes (diff) | |
| download | yuzu-183855e396cc6918d36fbf3e38ea426e934b4e3e.tar.gz yuzu-183855e396cc6918d36fbf3e38ea426e934b4e3e.tar.xz yuzu-183855e396cc6918d36fbf3e38ea426e934b4e3e.zip | |
shader: Implement tessellation shaders, polygon mode and invocation id
Diffstat (limited to '')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/value.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/value.cpp b/src/shader_recompiler/frontend/ir/value.cpp index 1e7ffb86d..bf5f8c0c2 100644 --- a/src/shader_recompiler/frontend/ir/value.cpp +++ b/src/shader_recompiler/frontend/ir/value.cpp | |||
| @@ -18,6 +18,8 @@ Value::Value(IR::Pred value) noexcept : type{Type::Pred}, pred{value} {} | |||
| 18 | 18 | ||
| 19 | Value::Value(IR::Attribute value) noexcept : type{Type::Attribute}, attribute{value} {} | 19 | Value::Value(IR::Attribute value) noexcept : type{Type::Attribute}, attribute{value} {} |
| 20 | 20 | ||
| 21 | Value::Value(IR::Patch value) noexcept : type{Type::Patch}, patch{value} {} | ||
| 22 | |||
| 21 | Value::Value(bool value) noexcept : type{Type::U1}, imm_u1{value} {} | 23 | Value::Value(bool value) noexcept : type{Type::U1}, imm_u1{value} {} |
| 22 | 24 | ||
| 23 | Value::Value(u8 value) noexcept : type{Type::U8}, imm_u8{value} {} | 25 | Value::Value(u8 value) noexcept : type{Type::U8}, imm_u8{value} {} |
| @@ -109,6 +111,11 @@ IR::Attribute Value::Attribute() const { | |||
| 109 | return attribute; | 111 | return attribute; |
| 110 | } | 112 | } |
| 111 | 113 | ||
| 114 | IR::Patch Value::Patch() const { | ||
| 115 | ValidateAccess(Type::Patch); | ||
| 116 | return patch; | ||
| 117 | } | ||
| 118 | |||
| 112 | bool Value::U1() const { | 119 | bool Value::U1() const { |
| 113 | if (IsIdentity()) { | 120 | if (IsIdentity()) { |
| 114 | return inst->Arg(0).U1(); | 121 | return inst->Arg(0).U1(); |
| @@ -182,6 +189,8 @@ bool Value::operator==(const Value& other) const { | |||
| 182 | return pred == other.pred; | 189 | return pred == other.pred; |
| 183 | case Type::Attribute: | 190 | case Type::Attribute: |
| 184 | return attribute == other.attribute; | 191 | return attribute == other.attribute; |
| 192 | case Type::Patch: | ||
| 193 | return patch == other.patch; | ||
| 185 | case Type::U1: | 194 | case Type::U1: |
| 186 | return imm_u1 == other.imm_u1; | 195 | return imm_u1 == other.imm_u1; |
| 187 | case Type::U8: | 196 | case Type::U8: |