summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Render.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2014-12-12 16:11:17 +0100
committerdegasus <wickmarkus@web.de>2014-12-12 16:11:17 +0100
commit1a5d7919640bfa9202a5244bb3a1a86ab70f8ce9 (patch)
tree293f01bd2584e1fd905438504f275c071c56f9c6 /Source/Core/VideoBackends/OGL/Render.cpp
parentfe6723066355788a8877f484a8711524a80430e7 (diff)
OGL: fix efb pokes
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp
index dc8cfa8075..1ce829bb99 100644
--- a/Source/Core/VideoBackends/OGL/Render.cpp
+++ b/Source/Core/VideoBackends/OGL/Render.cpp
@@ -1007,12 +1007,23 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
u32 cacheRectIdx = (y / EFB_CACHE_RECT_SIZE) * EFB_CACHE_WIDTH
+ (x / EFB_CACHE_RECT_SIZE);
- // Get the rectangular target region containing the EFB pixel
EFBRectangle efbPixelRc;
- efbPixelRc.left = (x / EFB_CACHE_RECT_SIZE) * EFB_CACHE_RECT_SIZE;
- efbPixelRc.top = (y / EFB_CACHE_RECT_SIZE) * EFB_CACHE_RECT_SIZE;
- efbPixelRc.right = std::min(efbPixelRc.left + EFB_CACHE_RECT_SIZE, (u32)EFB_WIDTH);
- efbPixelRc.bottom = std::min(efbPixelRc.top + EFB_CACHE_RECT_SIZE, (u32)EFB_HEIGHT);
+
+ if (type == PEEK_COLOR || type == PEEK_Z)
+ {
+ // Get the rectangular target region containing the EFB pixel
+ efbPixelRc.left = (x / EFB_CACHE_RECT_SIZE) * EFB_CACHE_RECT_SIZE;
+ efbPixelRc.top = (y / EFB_CACHE_RECT_SIZE) * EFB_CACHE_RECT_SIZE;
+ efbPixelRc.right = std::min(efbPixelRc.left + EFB_CACHE_RECT_SIZE, (u32)EFB_WIDTH);
+ efbPixelRc.bottom = std::min(efbPixelRc.top + EFB_CACHE_RECT_SIZE, (u32)EFB_HEIGHT);
+ }
+ else
+ {
+ efbPixelRc.left = x;
+ efbPixelRc.top = y;
+ efbPixelRc.right = x+1;
+ efbPixelRc.bottom = y+1;
+ }
TargetRectangle targetPixelRc = ConvertEFBRectangle(efbPixelRc);
u32 targetPixelRcWidth = targetPixelRc.right - targetPixelRc.left;