diff options
| author | 2021-05-21 20:56:46 -0400 | |
|---|---|---|
| committer | 2021-07-22 21:51:36 -0400 | |
| commit | 0f40b0e61ccc04216e0840e092dfe3051716b8b6 (patch) | |
| tree | 7c12a0e010dd9aecef164b10a848085957f15358 /src/shader_recompiler/backend/glsl/reg_alloc.cpp | |
| parent | glsl: Use std::string_view for Emit function args. (diff) | |
| download | yuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.tar.gz yuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.tar.xz yuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.zip | |
glsl: Implement a few Integer instructions
Diffstat (limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/glsl/reg_alloc.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp index f4886dbfd..3cfa16fea 100644 --- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp +++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp | |||
| @@ -57,9 +57,10 @@ std::string RegAlloc::Consume(const IR::Value& value) { | |||
| 57 | std::string RegAlloc::Consume(IR::Inst& inst) { | 57 | std::string RegAlloc::Consume(IR::Inst& inst) { |
| 58 | const Id id{inst.Definition<Id>()}; | 58 | const Id id{inst.Definition<Id>()}; |
| 59 | inst.DestructiveRemoveUsage(); | 59 | inst.DestructiveRemoveUsage(); |
| 60 | if (!inst.HasUses()) { | 60 | // TODO: reuse variables of same type if possible |
| 61 | Free(id); | 61 | // if (!inst.HasUses()) { |
| 62 | } | 62 | // Free(id); |
| 63 | // } | ||
| 63 | return Representation(inst.Definition<Id>()); | 64 | return Representation(inst.Definition<Id>()); |
| 64 | } | 65 | } |
| 65 | 66 | ||
| @@ -69,14 +70,24 @@ std::string RegAlloc::GetType(Type type, u32 index) { | |||
| 69 | } | 70 | } |
| 70 | register_defined[index] = true; | 71 | register_defined[index] = true; |
| 71 | switch (type) { | 72 | switch (type) { |
| 73 | case Type::U1: | ||
| 74 | return "bool "; | ||
| 72 | case Type::U32: | 75 | case Type::U32: |
| 73 | return "uint "; | 76 | return "uint "; |
| 74 | case Type::S32: | 77 | case Type::S32: |
| 75 | return "int "; | 78 | return "int "; |
| 76 | case Type::F32: | 79 | case Type::F32: |
| 77 | return "float "; | 80 | return "float "; |
| 78 | default: | 81 | case Type::U64: |
| 82 | return "uint64_t "; | ||
| 83 | case Type::U32x2: | ||
| 84 | return "uvec2 "; | ||
| 85 | case Type::F32x2: | ||
| 86 | return "vec2 "; | ||
| 87 | case Type::Void: | ||
| 79 | return ""; | 88 | return ""; |
| 89 | default: | ||
| 90 | throw NotImplementedException("Type {}", type); | ||
| 80 | } | 91 | } |
| 81 | } | 92 | } |
| 82 | 93 | ||