diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2018-05-22 09:58:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-22 09:58:58 +0200 |
| commit | 76eac56a077e77b289333981f03ae2e5530ba506 (patch) | |
| tree | 85160d0760ebe3b88ad6ed2fe5f48915923b3441 /Source/Core/VideoBackends/OGL/Render.cpp | |
| parent | 0979febe7805fe2d4e6669ea233bf6af9fc9680d (diff) | |
| parent | d0c025bf0bc44ac8a12b68e863e8204d365f072b (diff) | |
Merge pull request #6940 from stenzek/ogl-msaa-efb-access
OGL: Fix EFB access in MSAA-mode
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index f049ee9e3a..ffd84a1623 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -997,8 +997,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) // Resolve our rectangle. FramebufferManager::GetEFBDepthTexture(efbPixelRc); glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer()); - - RestoreAPIState(); } std::unique_ptr<float[]> depthMap(new float[targetPixelRcWidth * targetPixelRcHeight]); @@ -1007,6 +1005,9 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) targetPixelRcHeight, GL_DEPTH_COMPONENT, GL_FLOAT, depthMap.get()); UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, depthMap.get()); + + if (s_MSAASamples > 1) + RestoreAPIState(); } u32 xRect = x % EFB_CACHE_RECT_SIZE; @@ -1036,8 +1037,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) // Resolve our rectangle. FramebufferManager::GetEFBColorTexture(efbPixelRc); glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer()); - - RestoreAPIState(); } std::unique_ptr<u32[]> colorMap(new u32[targetPixelRcWidth * targetPixelRcHeight]); @@ -1051,6 +1050,9 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) targetPixelRcHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, colorMap.get()); UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, colorMap.get()); + + if (s_MSAASamples > 1) + RestoreAPIState(); } u32 xRect = x % EFB_CACHE_RECT_SIZE; |
