D3D11: Fix blit from out-of-bounds.

Do not copy pixels in a negative read region. Also make sure we clamp
the boundaries so the dEQP tests are mostly pixel-perfect.

We can't yet fix some default framebuffer tests because of issues with
blitting RGBA8 (default FBO) to floating point framebuffers.

BUG=angleproject:1241
TEST=dEQP-GLES3.functional.fbo.blit.*

Change-Id: I16ee264b0b1a7e6b9121dde5ae4f96cfd27ea53e
Reviewed-on: https://chromium-review.googlesource.com/315670
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index 8881c01..a2c0784 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -286,9 +286,8 @@
     mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, sourceFramebufferGL->getFramebufferID());
     mStateManager->bindFramebuffer(GL_DRAW_FRAMEBUFFER, mFramebufferID);
 
-    mFunctions->blitFramebuffer(sourceArea.x, sourceArea.y, sourceArea.x + sourceArea.width, sourceArea.y + sourceArea.height,
-                                destArea.x, destArea.y, destArea.x + destArea.width, destArea.y + destArea.height,
-                                mask, filter);
+    mFunctions->blitFramebuffer(sourceArea.x, sourceArea.y, sourceArea.x1(), sourceArea.y1(),
+                                destArea.x, destArea.y, destArea.x1(), destArea.y1(), mask, filter);
 
     return gl::Error(GL_NO_ERROR);
 }