summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-06-11 06:41:28 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:38 +0200
commit7d89a82a4891f78e2c068a24ad3bb56d74c92055 (patch)
treedb21e0994cfd729d7deeaf47eb300d1109539861
parentglsl: Address Rodrigo's feedback (diff)
downloadyuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar.gz
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar.bz2
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar.lz
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar.xz
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.tar.zst
yuzu-7d89a82a4891f78e2c068a24ad3bb56d74c92055.zip
-rw-r--r--src/shader_recompiler/backend/glsl/emit_context.h10
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp4
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp10
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp2
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp4
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp4
-rw-r--r--src/shader_recompiler/backend/glsl/var_alloc.cpp16
-rw-r--r--src/shader_recompiler/backend/glsl/var_alloc.h6
8 files changed, 13 insertions, 43 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_context.h b/src/shader_recompiler/backend/glsl/emit_context.h
index 0d18abe90..9d8be0c9a 100644
--- a/src/shader_recompiler/backend/glsl/emit_context.h
+++ b/src/shader_recompiler/backend/glsl/emit_context.h
@@ -70,21 +70,11 @@ public:
}
template <typename... Args>
- void AddS32(const char* format_str, IR::Inst& inst, Args&&... args) {
- Add<GlslVarType::S32>(format_str, inst, args...);
- }
-
- template <typename... Args>
void AddF32(const char* format_str, IR::Inst& inst, Args&&... args) {
Add<GlslVarType::F32>(format_str, inst, args...);
}
template <typename... Args>
- void AddS64(const char* format_str, IR::Inst& inst, Args&&... args) {
- Add<GlslVarType::S64>(format_str, inst, args...);
- }
-
- template <typename... Args>
void AddU64(const char* format_str, IR::Inst& inst, Args&&... args) {
Add<GlslVarType::U64>(format_str, inst, args...);
}
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
index 7353d5d4e..850eee1e1 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
@@ -183,7 +183,7 @@ void EmitStorageAtomicIAdd64(EmitContext& ctx, IR::Inst& inst, const IR::Value&
void EmitStorageAtomicSMin64(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value) {
// LOG_WARNING(..., "Op falling to non-atomic");
- ctx.AddS64("{}=packInt2x32(ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]));", inst,
+ ctx.AddU64("{}=packInt2x32(ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]));", inst,
ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
binding.U32(), ctx.var_alloc.Consume(offset));
ctx.Add("for(int i=0;i<2;++i){{ "
@@ -208,7 +208,7 @@ void EmitStorageAtomicUMin64(EmitContext& ctx, IR::Inst& inst, const IR::Value&
void EmitStorageAtomicSMax64(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value) {
// LOG_WARNING(..., "Op falling to non-atomic");
- ctx.AddS64("{}=packInt2x32(ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]));", inst,
+ ctx.AddU64("{}=packInt2x32(ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]));", inst,
ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
binding.U32(), ctx.var_alloc.Consume(offset));
ctx.Add("for(int i=0;i<2;++i){{ "
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp
index 777e290b4..c9f173e2f 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp
@@ -15,7 +15,7 @@ void EmitConvertS16F16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::I
}
void EmitConvertS16F32(EmitContext& ctx, IR::Inst& inst, std::string_view value) {
- ctx.AddS32("{}=(int({})&0xffff)|(bitfieldExtract(int({}),31,1)<<15);", inst, value, value);
+ ctx.AddU32("{}=(int({})&0xffff)|(bitfieldExtract(int({}),31,1)<<15);", inst, value, value);
}
void EmitConvertS16F64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
@@ -29,11 +29,11 @@ void EmitConvertS32F16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::I
}
void EmitConvertS32F32(EmitContext& ctx, IR::Inst& inst, std::string_view value) {
- ctx.AddS32("{}=int({});", inst, value);
+ ctx.AddU32("{}=int({});", inst, value);
}
void EmitConvertS32F64(EmitContext& ctx, IR::Inst& inst, std::string_view value) {
- ctx.AddS32("{}=int({});", inst, value);
+ ctx.AddU32("{}=int({});", inst, value);
}
void EmitConvertS64F16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
@@ -42,11 +42,11 @@ void EmitConvertS64F16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::I
}
void EmitConvertS64F32(EmitContext& ctx, IR::Inst& inst, std::string_view value) {
- ctx.AddS64("{}=int64_t(double({}));", inst, value);
+ ctx.AddU64("{}=int64_t(double({}));", inst, value);
}
void EmitConvertS64F64(EmitContext& ctx, IR::Inst& inst, std::string_view value) {
- ctx.AddS64("{}=int64_t({});", inst, value);
+ ctx.AddU64("{}=int64_t({});", inst, value);
}
void EmitConvertU16F16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
index 6e04c6cb2..7a2f79d10 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
@@ -103,7 +103,7 @@ void EmitShiftRightLogical64(EmitContext& ctx, IR::Inst& inst, std::string_view
void EmitShiftRightArithmetic32(EmitContext& ctx, IR::Inst& inst, std::string_view base,
std::string_view shift) {
- ctx.AddS32("{}=int({})>>{};", inst, base, shift);
+ ctx.AddU32("{}=int({})>>{};", inst, base, shift);
}
void EmitShiftRightArithmetic64(EmitContext& ctx, IR::Inst& inst, std::string_view base,
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
index af3dadf71..daef5fb84 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
@@ -87,7 +87,7 @@ void EmitLoadStorageU8(EmitContext& ctx, IR::Inst& inst, const IR::Value& bindin
void EmitLoadStorageS8(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset) {
const auto offset_var{ctx.var_alloc.Consume(offset)};
- ctx.AddS32("{}=bitfieldExtract(int({}_ssbo{}[{}>>2]),int({}%4)*8,8);", inst, ctx.stage_name,
+ ctx.AddU32("{}=bitfieldExtract(int({}_ssbo{}[{}>>2]),int({}%4)*8,8);", inst, ctx.stage_name,
binding.U32(), offset_var, offset_var);
}
@@ -101,7 +101,7 @@ void EmitLoadStorageU16(EmitContext& ctx, IR::Inst& inst, const IR::Value& bindi
void EmitLoadStorageS16(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset) {
const auto offset_var{ctx.var_alloc.Consume(offset)};
- ctx.AddS32("{}=bitfieldExtract(int({}_ssbo{}[{}>>2]),int(({}>>1)%2)*16,16);", inst,
+ ctx.AddU32("{}=bitfieldExtract(int({}_ssbo{}[{}>>2]),int(({}>>1)%2)*16,16);", inst,
ctx.stage_name, binding.U32(), offset_var, offset_var);
}
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp
index 5b6175903..7abc6575f 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp
@@ -14,7 +14,7 @@ void EmitLoadSharedU8(EmitContext& ctx, IR::Inst& inst, std::string_view offset)
}
void EmitLoadSharedS8(EmitContext& ctx, IR::Inst& inst, std::string_view offset) {
- ctx.AddS32("{}=bitfieldExtract(int(smem[{}>>2]),int({}%4)*8,8);", inst, offset, offset);
+ ctx.AddU32("{}=bitfieldExtract(int(smem[{}>>2]),int({}%4)*8,8);", inst, offset, offset);
}
void EmitLoadSharedU16(EmitContext& ctx, IR::Inst& inst, std::string_view offset) {
@@ -22,7 +22,7 @@ void EmitLoadSharedU16(EmitContext& ctx, IR::Inst& inst, std::string_view offset
}
void EmitLoadSharedS16(EmitContext& ctx, IR::Inst& inst, std::string_view offset) {
- ctx.AddS32("{}=bitfieldExtract(int(smem[{}>>2]),int(({}>>1)%2)*16,16);", inst, offset, offset);
+ ctx.AddU32("{}=bitfieldExtract(int(smem[{}>>2]),int(({}>>1)%2)*16,16);", inst, offset, offset);
}
void EmitLoadSharedU32(EmitContext& ctx, IR::Inst& inst, std::string_view offset) {
diff --git a/src/shader_recompiler/backend/glsl/var_alloc.cpp b/src/shader_recompiler/backend/glsl/var_alloc.cpp
index 6a19aa549..cbf56491c 100644
--- a/src/shader_recompiler/backend/glsl/var_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/var_alloc.cpp
@@ -21,12 +21,8 @@ std::string TypePrefix(GlslVarType type) {
return "f16x2_";
case GlslVarType::U32:
return "u_";
- case GlslVarType::S32:
- return "s_";
case GlslVarType::F32:
return "f_";
- case GlslVarType::S64:
- return "s64_";
case GlslVarType::U64:
return "u64_";
case GlslVarType::F64:
@@ -213,13 +209,9 @@ std::string VarAlloc::GetGlslType(GlslVarType type) const {
return "f16vec2";
case GlslVarType::U32:
return "uint";
- case GlslVarType::S32:
- return "int";
case GlslVarType::F32:
case GlslVarType::PrecF32:
return "float";
- case GlslVarType::S64:
- return "int64_t";
case GlslVarType::U64:
return "uint64_t";
case GlslVarType::F64:
@@ -252,12 +244,8 @@ VarAlloc::UseTracker& VarAlloc::GetUseTracker(GlslVarType type) {
return var_f16x2;
case GlslVarType::U32:
return var_u32;
- case GlslVarType::S32:
- return var_s32;
case GlslVarType::F32:
return var_f32;
- case GlslVarType::S64:
- return var_s64;
case GlslVarType::U64:
return var_u64;
case GlslVarType::F64:
@@ -291,12 +279,8 @@ const VarAlloc::UseTracker& VarAlloc::GetUseTracker(GlslVarType type) const {
return var_f16x2;
case GlslVarType::U32:
return var_u32;
- case GlslVarType::S32:
- return var_s32;
case GlslVarType::F32:
return var_f32;
- case GlslVarType::S64:
- return var_s64;
case GlslVarType::U64:
return var_u64;
case GlslVarType::F64:
diff --git a/src/shader_recompiler/backend/glsl/var_alloc.h b/src/shader_recompiler/backend/glsl/var_alloc.h
index ab1d1acbd..8b49f32a6 100644
--- a/src/shader_recompiler/backend/glsl/var_alloc.h
+++ b/src/shader_recompiler/backend/glsl/var_alloc.h
@@ -21,10 +21,8 @@ namespace Shader::Backend::GLSL {
enum class GlslVarType : u32 {
U1,
F16x2,
- S32,
U32,
F32,
- S64,
U64,
F64,
U32x2,
@@ -42,7 +40,7 @@ struct Id {
union {
u32 raw;
BitField<0, 1, u32> is_valid;
- BitField<1, 5, GlslVarType> type;
+ BitField<1, 4, GlslVarType> type;
BitField<6, 26, u32> index;
};
@@ -90,7 +88,6 @@ private:
UseTracker var_bool{};
UseTracker var_f16x2{};
- UseTracker var_s32{};
UseTracker var_u32{};
UseTracker var_u32x2{};
UseTracker var_u32x3{};
@@ -100,7 +97,6 @@ private:
UseTracker var_f32x3{};
UseTracker var_f32x4{};
UseTracker var_u64{};
- UseTracker var_s64{};
UseTracker var_f64{};
UseTracker var_precf32{};
UseTracker var_precf64{};