fix slow performance on desktops by uping our max-texture-dim from 512 to
whatever the gpu itself broadcasts.
git-svn-id: http://skia.googlecode.com/svn/trunk@742 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 4042006..dca146e 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -709,13 +709,6 @@
fContext->drawPath(grPaint, &iter, fill);
}
-/*
- * This value must not exceed the GPU's texture dimension limit, but it can
- * be smaller, if that helps avoid very large single textures hurting the
- * cache.
- */
-#define MAX_TEXTURE_DIM 512
-
void SkGpuDevice::drawBitmap(const SkDraw& draw,
const SkBitmap& bitmap,
const SkIRect* srcRectPtr,
@@ -736,8 +729,9 @@
}
grPaint.fSampler.setFilter(paint.isFilterBitmap());
- if (bitmap.getTexture() || (bitmap.width() <= MAX_TEXTURE_DIM &&
- bitmap.height() <= MAX_TEXTURE_DIM)) {
+ const int maxTextureDim = fContext->getMaxTextureDimension();
+ if (bitmap.getTexture() || (bitmap.width() <= maxTextureDim &&
+ bitmap.height() <= maxTextureDim)) {
// take the fast case
this->internalDrawBitmap(draw, bitmap, srcRect, m, &grPaint);
return;
@@ -762,13 +756,13 @@
clipRect.offset(DX, DY);
}
- int nx = bitmap.width() / MAX_TEXTURE_DIM;
- int ny = bitmap.height() / MAX_TEXTURE_DIM;
+ int nx = bitmap.width() / maxTextureDim;
+ int ny = bitmap.height() / maxTextureDim;
for (int x = 0; x <= nx; x++) {
for (int y = 0; y <= ny; y++) {
SkIRect tileR;
- tileR.set(x * MAX_TEXTURE_DIM, y * MAX_TEXTURE_DIM,
- (x + 1) * MAX_TEXTURE_DIM, (y + 1) * MAX_TEXTURE_DIM);
+ tileR.set(x * maxTextureDim, y * maxTextureDim,
+ (x + 1) * maxTextureDim, (y + 1) * maxTextureDim);
if (!SkIRect::Intersects(tileR, clipRect)) {
continue;
}
@@ -807,8 +801,8 @@
const SkIRect& srcRect,
const SkMatrix& m,
GrPaint* grPaint) {
- SkASSERT(bitmap.width() <= MAX_TEXTURE_DIM &&
- bitmap.height() <= MAX_TEXTURE_DIM);
+ SkASSERT(bitmap.width() <= fContext->getMaxTextureDimension() &&
+ bitmap.height() <= fContext->getMaxTextureDimension());
SkAutoLockPixels alp(bitmap);
if (!bitmap.getTexture() && !bitmap.readyToDraw()) {