diff options
3 files changed, 10 insertions, 9 deletions
| diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h index 51dbeb2c1..5370af0c5 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h +++ b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h @@ -204,8 +204,8 @@ void EmitSelectU8(EmitContext& ctx, std::string_view cond, std::string_view true                    std::string_view false_value);  void EmitSelectU16(EmitContext& ctx, std::string_view cond, std::string_view true_value,                     std::string_view false_value); -void EmitSelectU32(EmitContext& ctx, std::string_view cond, std::string_view true_value, -                   std::string_view false_value); +void EmitSelectU32(EmitContext& ctx, IR::Inst& inst, std::string_view cond, +                   std::string_view true_value, std::string_view false_value);  void EmitSelectU64(EmitContext& ctx, std::string_view cond, std::string_view true_value,                     std::string_view false_value);  void EmitSelectF16(EmitContext& ctx, std::string_view cond, std::string_view true_value, diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp index 016bccd39..3f1b56a05 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp @@ -22,7 +22,7 @@ void EmitIAdd64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& in  void EmitISub32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,                  [[maybe_unused]] std::string_view a, [[maybe_unused]] std::string_view b) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}={}-{};", inst, a, b);  }  void EmitISub64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, @@ -111,26 +111,26 @@ void EmitBitFieldInsert([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::                          [[maybe_unused]] std::string_view insert,                          [[maybe_unused]] std::string_view offset,                          [[maybe_unused]] std::string_view count) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}=bitfieldInsert({}, {}, int({}), int({}));", inst, base, insert, offset, count);  }  void EmitBitFieldSExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,                            [[maybe_unused]] std::string_view base,                            [[maybe_unused]] std::string_view offset,                            [[maybe_unused]] std::string_view count) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}=bitfieldExtract(int({}), int({}), int({}));", inst, base, offset, count);  }  void EmitBitFieldUExtract([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,                            [[maybe_unused]] std::string_view base,                            [[maybe_unused]] std::string_view offset,                            [[maybe_unused]] std::string_view count) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}=bitfieldExtract({}, int({}), int({}));", inst, base, offset, count);  }  void EmitBitReverse32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,                        [[maybe_unused]] std::string_view value) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}=bitfieldReverse({});", inst, value);  }  void EmitBitCount32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst, diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_select.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_select.cpp index 86d38da98..4455b0f9f 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_select.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_select.cpp @@ -28,10 +28,11 @@ void EmitSelectU16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::stri      throw NotImplementedException("GLSL Instruction");  } -void EmitSelectU32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view cond, +void EmitSelectU32([[maybe_unused]] EmitContext& ctx, IR::Inst& inst, +                   [[maybe_unused]] std::string_view cond,                     [[maybe_unused]] std::string_view true_value,                     [[maybe_unused]] std::string_view false_value) { -    throw NotImplementedException("GLSL Instruction"); +    ctx.AddU32("{}={}?{}:{};", inst, cond, true_value, false_value);  }  void EmitSelectU64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] std::string_view cond, | 
