Use StretchRect to speed up simple blits.
Fixed copy position transformation.
TRAC #16494
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@618 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 0be3bee..bf3fb99 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -1436,11 +1436,13 @@
sourceRect.top = clamp(sourceRect.top, 0, source->getColorbuffer()->getHeight());
sourceRect.right = clamp(sourceRect.right, 0, source->getColorbuffer()->getWidth());
sourceRect.bottom = clamp(sourceRect.bottom, 0, source->getColorbuffer()->getHeight());
+
+ GLint destYOffset = transformPixelYOffset(0, height, mImageArray[level].height);
IDirect3DSurface9 *dest;
HRESULT hr = mTexture->GetSurfaceLevel(level, &dest);
- getBlitter()->formatConvert(source->getRenderTarget(), sourceRect, format, 0, 0, dest);
+ getBlitter()->copy(source->getRenderTarget(), sourceRect, format, 0, destYOffset, dest);
dest->Release();
}
}
@@ -1489,7 +1491,7 @@
IDirect3DSurface9 *dest;
HRESULT hr = mTexture->GetSurfaceLevel(level, &dest);
- getBlitter()->formatConvert(source->getRenderTarget(), sourceRect, mImageArray[0].format, xoffset, destYOffset, dest);
+ getBlitter()->copy(source->getRenderTarget(), sourceRect, mImageArray[0].format, xoffset, destYOffset, dest);
dest->Release();
}
}
@@ -2281,9 +2283,11 @@
sourceRect.right = clamp(sourceRect.right, 0, source->getColorbuffer()->getWidth());
sourceRect.bottom = clamp(sourceRect.bottom, 0, source->getColorbuffer()->getHeight());
+ GLint destYOffset = transformPixelYOffset(0, height, mImageArray[faceindex][level].width);
+
IDirect3DSurface9 *dest = getCubeMapSurface(target, level);
- getBlitter()->formatConvert(source->getRenderTarget(), sourceRect, format, 0, 0, dest);
+ getBlitter()->copy(source->getRenderTarget(), sourceRect, format, 0, destYOffset, dest);
dest->Release();
}
}
@@ -2349,7 +2353,7 @@
IDirect3DSurface9 *dest = getCubeMapSurface(target, level);
- getBlitter()->formatConvert(source->getRenderTarget(), sourceRect, mImageArray[0][0].format, xoffset, destYOffset, dest);
+ getBlitter()->copy(source->getRenderTarget(), sourceRect, mImageArray[0][0].format, xoffset, destYOffset, dest);
dest->Release();
}
}