From eeb0f0b7c45d6b81fe1cbd5ed06dfdb7d4a55dd9 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 8 May 2015 09:28:29 -0400 Subject: [PATCH 1/2] OGL: Get rid of some explicit deletes in Render --- Source/Core/VideoBackends/OGL/Render.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 1c0e3df4c2..fd93d9d144 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -1017,14 +1018,12 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) g_renderer->RestoreAPIState(); } - float* depthMap = new float[targetPixelRcWidth * targetPixelRcHeight]; + std::unique_ptr depthMap(new float[targetPixelRcWidth * targetPixelRcHeight]); glReadPixels(targetPixelRc.left, targetPixelRc.bottom, targetPixelRcWidth, targetPixelRcHeight, - GL_DEPTH_COMPONENT, GL_FLOAT, depthMap); + GL_DEPTH_COMPONENT, GL_FLOAT, depthMap.get()); - UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, depthMap); - - delete[] depthMap; + UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, depthMap.get()); } u32 xRect = x % EFB_CACHE_RECT_SIZE; @@ -1061,19 +1060,17 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) g_renderer->RestoreAPIState(); } - u32* colorMap = new u32[targetPixelRcWidth * targetPixelRcHeight]; + std::unique_ptr colorMap(new u32[targetPixelRcWidth * targetPixelRcHeight]); if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) // XXX: Swap colours glReadPixels(targetPixelRc.left, targetPixelRc.bottom, targetPixelRcWidth, targetPixelRcHeight, - GL_RGBA, GL_UNSIGNED_BYTE, colorMap); + GL_RGBA, GL_UNSIGNED_BYTE, colorMap.get()); else glReadPixels(targetPixelRc.left, targetPixelRc.bottom, targetPixelRcWidth, targetPixelRcHeight, - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, colorMap); + GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, colorMap.get()); - UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, colorMap); - - delete[] colorMap; + UpdateEFBCache(type, cacheRectIdx, efbPixelRc, targetPixelRc, colorMap.get()); } u32 xRect = x % EFB_CACHE_RECT_SIZE; From a94e4dd07fe48a1c0cce16add3577b152f3cb9f4 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 8 May 2015 09:29:36 -0400 Subject: [PATCH 2/2] OGL: Join declarations and assignments in Render --- Source/Core/VideoBackends/OGL/Render.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index fd93d9d144..5fe2711845 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -1003,8 +1003,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) { case PEEK_Z: { - u32 z; - if (!s_efbCacheValid[0][cacheRectIdx]) { if (s_MSAASamples > 1) @@ -1028,7 +1026,7 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) u32 xRect = x % EFB_CACHE_RECT_SIZE; u32 yRect = y % EFB_CACHE_RECT_SIZE; - z = s_efbCache[0][cacheRectIdx][yRect * EFB_CACHE_RECT_SIZE + xRect]; + u32 z = s_efbCache[0][cacheRectIdx][yRect * EFB_CACHE_RECT_SIZE + xRect]; // if Z is in 16 bit format you must return a 16 bit integer if (bpmem.zcontrol.pixel_format == PEControl::RGB565_Z16) @@ -1044,9 +1042,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) // Tested in Killer 7, the first 8bits represent the alpha value which is used to // determine if we're aiming at an enemy (0x80 / 0x88) or not (0x70) // Wind Waker is also using it for the pictograph to determine the color of each pixel - - u32 color; - if (!s_efbCacheValid[1][cacheRectIdx]) { if (s_MSAASamples > 1) @@ -1075,7 +1070,7 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) u32 xRect = x % EFB_CACHE_RECT_SIZE; u32 yRect = y % EFB_CACHE_RECT_SIZE; - color = s_efbCache[1][cacheRectIdx][yRect * EFB_CACHE_RECT_SIZE + xRect]; + u32 color = s_efbCache[1][cacheRectIdx][yRect * EFB_CACHE_RECT_SIZE + xRect]; // check what to do with the alpha channel (GX_PokeAlphaRead) PixelEngine::UPEAlphaReadReg alpha_read_mode = PixelEngine::GetAlphaReadMode();