summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-05-22 03:31:41 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:36 +0200
commit266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43 (patch)
tree0e08734f5b94c2517d054d05aebe832aef2fbed7
parentglsl: Implement a few Integer instructions (diff)
downloadyuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar.gz
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar.bz2
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar.lz
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar.xz
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.tar.zst
yuzu-266a3d60e3d8ee4b67a4a6b3e69d8632509b7a43.zip
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_instructions.h4
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp10
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_select.cpp5
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,