From 9e798eec94a8ebe94c1ef8270b504b5698b2a0f5 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 29 Apr 2018 18:52:30 +1000 Subject: 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. --- Source/Core/VideoBackends/Software/TextureEncoder.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'Source/Core/VideoBackends/Software/TextureEncoder.cpp') 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 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 { -- cgit v1.2.3