summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-05-17 07:52:01 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:31 +0200
commitec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6 (patch)
tree063963b0a197526467902ef9bfceff1be8f5b9ef /src/shader_recompiler/frontend
parentglasm: Add support for non-2D texture samples (diff)
downloadyuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.gz
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.bz2
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.lz
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.xz
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.zst
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.zip
Diffstat (limited to 'src/shader_recompiler/frontend')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp11
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h5
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp5
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp18
4 files changed, 17 insertions, 22 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index def29143e..94bdbe39c 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -1778,12 +1778,10 @@ Value IREmitter::ImageSampleImplicitLod(const Value& handle, const Value& coords
}
Value IREmitter::ImageSampleExplicitLod(const Value& handle, const Value& coords, const F32& lod,
- const Value& offset, const F32& lod_clamp,
- TextureInstInfo info) {
- const Value lod_lc{MakeLodClampPair(*this, lod, lod_clamp)};
+ const Value& offset, TextureInstInfo info) {
const Opcode op{handle.IsImmediate() ? Opcode::BoundImageSampleExplicitLod
: Opcode::BindlessImageSampleExplicitLod};
- return Inst(op, Flags{info}, handle, coords, lod_lc, offset);
+ return Inst(op, Flags{info}, handle, coords, lod, offset);
}
F32 IREmitter::ImageSampleDrefImplicitLod(const Value& handle, const Value& coords, const F32& dref,
@@ -1796,12 +1794,11 @@ F32 IREmitter::ImageSampleDrefImplicitLod(const Value& handle, const Value& coor
}
F32 IREmitter::ImageSampleDrefExplicitLod(const Value& handle, const Value& coords, const F32& dref,
- const F32& lod, const Value& offset, const F32& lod_clamp,
+ const F32& lod, const Value& offset,
TextureInstInfo info) {
- const Value lod_lc{MakeLodClampPair(*this, lod, lod_clamp)};
const Opcode op{handle.IsImmediate() ? Opcode::BoundImageSampleDrefExplicitLod
: Opcode::BindlessImageSampleDrefExplicitLod};
- return Inst<F32>(op, Flags{info}, handle, coords, dref, lod_lc, offset);
+ return Inst<F32>(op, Flags{info}, handle, coords, dref, lod, offset);
}
Value IREmitter::ImageGather(const Value& handle, const Value& coords, const Value& offset,
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 4f7c820fe..4ae69b788 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -302,15 +302,14 @@ public:
const F32& lod_clamp, TextureInstInfo info);
[[nodiscard]] Value ImageSampleExplicitLod(const Value& handle, const Value& coords,
const F32& lod, const Value& offset,
- const F32& lod_clamp, TextureInstInfo info);
+ TextureInstInfo info);
[[nodiscard]] F32 ImageSampleDrefImplicitLod(const Value& handle, const Value& coords,
const F32& dref, const F32& bias,
const Value& offset, const F32& lod_clamp,
TextureInstInfo info);
[[nodiscard]] F32 ImageSampleDrefExplicitLod(const Value& handle, const Value& coords,
const F32& dref, const F32& lod,
- const Value& offset, const F32& lod_clamp,
- TextureInstInfo info);
+ const Value& offset, TextureInstInfo info);
[[nodiscard]] Value ImageQueryDimension(const Value& handle, const IR::U32& lod);
[[nodiscard]] Value ImageQueryLod(const Value& handle, const Value& coords,
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp
index 9671d115e..0046b5edd 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp
@@ -177,14 +177,13 @@ void Impl(TranslatorVisitor& v, u64 insn, bool aoffi, Blod blod, bool lc,
const IR::Value sample{[&]() -> IR::Value {
if (tex.dc == 0) {
if (HasExplicitLod(blod)) {
- return v.ir.ImageSampleExplicitLod(handle, coords, lod, offset, lod_clamp, info);
+ return v.ir.ImageSampleExplicitLod(handle, coords, lod, offset, info);
} else {
return v.ir.ImageSampleImplicitLod(handle, coords, lod, offset, lod_clamp, info);
}
}
if (HasExplicitLod(blod)) {
- return v.ir.ImageSampleDrefExplicitLod(handle, coords, dref, lod, offset, lod_clamp,
- info);
+ return v.ir.ImageSampleDrefExplicitLod(handle, coords, dref, lod, offset, info);
} else {
return v.ir.ImageSampleDrefImplicitLod(handle, coords, dref, lod, offset, lod_clamp,
info);
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp
index 3500a4559..154e7f1a1 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch_swizzled.cpp
@@ -81,18 +81,18 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
switch (texs.encoding) {
case 0: // 1D.LZ
info.type.Assign(TextureType::Color1D);
- return v.ir.ImageSampleExplicitLod(handle, v.F(reg_a), zero, {}, {}, info);
+ return v.ir.ImageSampleExplicitLod(handle, v.F(reg_a), zero, {}, info);
case 1: // 2D
info.type.Assign(TextureType::Color2D);
return v.ir.ImageSampleImplicitLod(handle, Composite(v, reg_a, reg_b), {}, {}, {}, info);
case 2: // 2D.LZ
info.type.Assign(TextureType::Color2D);
- return v.ir.ImageSampleExplicitLod(handle, Composite(v, reg_a, reg_b), zero, {}, {}, info);
+ return v.ir.ImageSampleExplicitLod(handle, Composite(v, reg_a, reg_b), zero, {}, info);
case 3: // 2D.LL
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::Color2D);
return v.ir.ImageSampleExplicitLod(handle, Composite(v, reg_a, reg_a + 1), v.F(reg_b), {},
- {}, info);
+ info);
case 4: // 2D.DC
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::Color2D);
@@ -105,13 +105,13 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
info.type.Assign(TextureType::Color2D);
info.is_depth.Assign(1);
return v.ir.ImageSampleDrefExplicitLod(handle, Composite(v, reg_a, reg_a + 1),
- v.F(reg_b + 1), v.F(reg_b), {}, {}, info);
+ v.F(reg_b + 1), v.F(reg_b), {}, info);
case 6: // 2D.LZ.DC
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::Color2D);
info.is_depth.Assign(1);
return v.ir.ImageSampleDrefExplicitLod(handle, Composite(v, reg_a, reg_a + 1), v.F(reg_b),
- zero, {}, {}, info);
+ zero, {}, info);
case 7: // ARRAY_2D
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::ColorArray2D);
@@ -123,7 +123,7 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
info.type.Assign(TextureType::ColorArray2D);
return v.ir.ImageSampleExplicitLod(
handle, v.ir.CompositeConstruct(v.F(reg_a + 1), v.F(reg_b), ReadArray(v, v.X(reg_a))),
- zero, {}, {}, info);
+ zero, {}, info);
case 9: // ARRAY_2D.LZ.DC
CheckAlignment(reg_a, 2);
CheckAlignment(reg_b, 2);
@@ -131,7 +131,7 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
info.is_depth.Assign(1);
return v.ir.ImageSampleDrefExplicitLod(
handle, v.ir.CompositeConstruct(v.F(reg_a + 1), v.F(reg_b), ReadArray(v, v.X(reg_a))),
- v.F(reg_b + 1), zero, {}, {}, info);
+ v.F(reg_b + 1), zero, {}, info);
case 10: // 3D
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::Color3D);
@@ -141,7 +141,7 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::Color3D);
return v.ir.ImageSampleExplicitLod(handle, Composite(v, reg_a, reg_a + 1, reg_b), zero, {},
- {}, info);
+ info);
case 12: // CUBE
CheckAlignment(reg_a, 2);
info.type.Assign(TextureType::ColorCube);
@@ -152,7 +152,7 @@ IR::Value Sample(TranslatorVisitor& v, u64 insn) {
CheckAlignment(reg_b, 2);
info.type.Assign(TextureType::ColorCube);
return v.ir.ImageSampleExplicitLod(handle, Composite(v, reg_a, reg_a + 1, reg_b),
- v.F(reg_b + 1), {}, {}, info);
+ v.F(reg_b + 1), {}, info);
default:
throw NotImplementedException("Illegal encoding {}", texs.encoding.Value());
}