summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Software/TextureEncoder.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-04-29 18:52:30 +1000
committerStenzek <stenzek@gmail.com>2018-04-29 19:05:20 +1000
commit9e798eec94a8ebe94c1ef8270b504b5698b2a0f5 (patch)
tree4265b19082fd65555dd795703e09abb94811c65a /Source/Core/VideoBackends/Software/TextureEncoder.cpp
parenta192a3bb3043c921ec897186c2a927b33050dffc (diff)
Implement EFB copy filter and gamma in hardware backends
Also makes y_scale a dynamic parameter for EFB copies, as it doesn't make sense to keep it as part of the uid, otherwise we're generating redundant shaders.
Diffstat (limited to 'Source/Core/VideoBackends/Software/TextureEncoder.cpp')
-rw-r--r--Source/Core/VideoBackends/Software/TextureEncoder.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/Source/Core/VideoBackends/Software/TextureEncoder.cpp b/Source/Core/VideoBackends/Software/TextureEncoder.cpp
index 5308dca705..a31888e544 100644
--- a/Source/Core/VideoBackends/Software/TextureEncoder.cpp
+++ b/Source/Core/VideoBackends/Software/TextureEncoder.cpp
@@ -1469,15 +1469,12 @@ void EncodeEfbCopy(u8* dst, const EFBCopyParams& params, u32 native_width, u32 b
}
void Encode(u8* dst, const EFBCopyParams& params, u32 native_width, u32 bytes_per_row,
- u32 num_blocks_y, u32 memory_stride, const EFBRectangle& src_rect, bool scale_by_half)
+ u32 num_blocks_y, u32 memory_stride, const EFBRectangle& src_rect, bool scale_by_half,
+ float y_scale, float gamma)
{
if (params.copy_format == EFBCopyFormat::XFB)
{
- static constexpr std::array<float, 4> gamma_LUT = {1.0f, 1.7f, 2.2f, 1.0f};
- EfbInterface::EncodeXFB(dst, native_width, src_rect, params.y_scale,
- !!bpmem.triggerEFBCopy.clamp_top, !!bpmem.triggerEFBCopy.clamp_bottom,
- gamma_LUT[bpmem.triggerEFBCopy.gamma],
- bpmem.copyfilter.GetCoefficients());
+ EfbInterface::EncodeXFB(dst, native_width, src_rect, y_scale, gamma);
}
else
{