diff options
| author | Stenzek <stenzek@gmail.com> | 2018-04-29 18:52:30 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-04-29 19:05:20 +1000 |
| commit | 9e798eec94a8ebe94c1ef8270b504b5698b2a0f5 (patch) | |
| tree | 4265b19082fd65555dd795703e09abb94811c65a /Source/Core/VideoBackends/Software/TextureEncoder.cpp | |
| parent | a192a3bb3043c921ec897186c2a927b33050dffc (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.cpp | 9 |
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 { |
