From 495902787c74612c870547c21dbdb61bc53fecf8 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 29 Oct 2015 08:42:30 +0100 Subject: OGL: Remove TCache::Entry usage in TextureConverter --- Source/Core/VideoBackends/OGL/TextureCache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp') diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 2cd1f3942a..287e9b2188 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -272,7 +272,11 @@ void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, unsigned int ds { TextureConverter::EncodeToRamFromTexture( dstPointer, - this, + format, + native_width, + BytesPerRow(), + NumBlocksY(), + memory_stride, read_texture, srcFormat == PEControl::Z24, isIntensity, -- cgit v1.2.3 From 71b22702a1b65d024311d6a92069ab76a3b48c96 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 29 Oct 2015 08:45:17 +0100 Subject: OGL-TextureConverter: Keep care about the global state ifself --- Source/Core/VideoBackends/OGL/TextureCache.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp') diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 287e9b2188..24fcb81e82 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -264,6 +264,9 @@ void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, unsigned int ds glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + FramebufferManager::SetFramebuffer(0); + g_renderer->RestoreAPIState(); + if (g_ActiveConfig.bSkipEFBCopyToRam) { this->Zero(dstPointer); @@ -277,16 +280,11 @@ void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, unsigned int ds BytesPerRow(), NumBlocksY(), memory_stride, - read_texture, - srcFormat == PEControl::Z24, + srcFormat, isIntensity, scaleByHalf, srcRect); } - - FramebufferManager::SetFramebuffer(0); - - g_renderer->RestoreAPIState(); } TextureCache::TextureCache() -- cgit v1.2.3 From dcdf8fd3ced5e5d2b94299bc710a69ee06bab0d6 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 29 Oct 2015 17:48:35 +0100 Subject: TextureCache: Split efb2ram from efb2tex --- Source/Core/VideoBackends/OGL/TextureCache.cpp | 34 ++++++++++++-------------- 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp') diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 24fcb81e82..e733cd8d87 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -266,25 +266,23 @@ void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, unsigned int ds FramebufferManager::SetFramebuffer(0); g_renderer->RestoreAPIState(); +} - if (g_ActiveConfig.bSkipEFBCopyToRam) - { - this->Zero(dstPointer); - } - else - { - TextureConverter::EncodeToRamFromTexture( - dstPointer, - format, - native_width, - BytesPerRow(), - NumBlocksY(), - memory_stride, - srcFormat, - isIntensity, - scaleByHalf, - srcRect); - } +void TextureCache::CopyEFB(u8* dst, u32 format, u32 native_width, u32 bytes_per_row, u32 num_blocks_y, u32 memory_stride, + PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, + bool isIntensity, bool scaleByHalf) +{ + TextureConverter::EncodeToRamFromTexture( + dst, + format, + native_width, + bytes_per_row, + num_blocks_y, + memory_stride, + srcFormat, + isIntensity, + scaleByHalf, + srcRect); } TextureCache::TextureCache() -- cgit v1.2.3 From 087ba5268a5512e95783ad69bc743a5aeb0bb0b9 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 29 Oct 2015 18:08:04 +0100 Subject: TextureCache: Rewrite EFB Copy control flow --- Source/Core/VideoBackends/OGL/TextureCache.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp') diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index e733cd8d87..5ffd87699b 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -215,10 +215,8 @@ void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, TextureCache::SetStage(); } -void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, unsigned int dstFormat, u32 dstStride, - PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, - bool isIntensity, bool scaleByHalf, unsigned int cbufid, - const float *colmat) +void TextureCache::TCacheEntry::FromRenderTarget(u8* dstPointer, PEControl::PixelFormat srcFormat, const EFBRectangle& srcRect, + bool scaleByHalf, unsigned int cbufid, const float *colmat) { g_renderer->ResetAPIState(); // reset any game specific settings -- cgit v1.2.3