Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Unified Diff: src/gpu/GrAADistanceFieldPathRenderer.cpp

Issue 920333003: Revert of Use uint16s for texture coordinates when rendering text. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/gpu/GrTypesPriv.h ('k') | src/gpu/GrBitmapTextContext.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrAADistanceFieldPathRenderer.cpp
diff --git a/src/gpu/GrAADistanceFieldPathRenderer.cpp b/src/gpu/GrAADistanceFieldPathRenderer.cpp
index 482358b94d05fadaa697825128c9998934ffb4fe..f2d618efcde2a3116ceef6364325a39213531139 100755
--- a/src/gpu/GrAADistanceFieldPathRenderer.cpp
+++ b/src/gpu/GrAADistanceFieldPathRenderer.cpp
@@ -19,10 +19,10 @@
#include "SkDistanceFieldGen.h"
#include "SkRTConf.h"
-#define ATLAS_TEXTURE_WIDTH 1024
+#define ATLAS_TEXTURE_WIDTH 1024
#define ATLAS_TEXTURE_HEIGHT 2048
-#define PLOT_WIDTH 256
-#define PLOT_HEIGHT 256
+#define PLOT_WIDTH 256
+#define PLOT_HEIGHT 256
#define NUM_PLOTS_X (ATLAS_TEXTURE_WIDTH / PLOT_WIDTH)
#define NUM_PLOTS_Y (ATLAS_TEXTURE_HEIGHT / PLOT_HEIGHT)
@@ -342,41 +342,39 @@
bool success = target->reserveVertexAndIndexSpace(4,
fCachedGeometryProcessor->getVertexStride(),
0, &vertices, NULL);
- SkASSERT(fCachedGeometryProcessor->getVertexStride() == sizeof(SkPoint) + sizeof(SkIPoint16));
+ SkASSERT(fCachedGeometryProcessor->getVertexStride() == 2 * sizeof(SkPoint));
GrAlwaysAssert(success);
SkScalar dx = pathData->fBounds.fLeft;
SkScalar dy = pathData->fBounds.fTop;
- // need to compute integer sizes for the glyph because we're using
- // uint16_t tex coords and they need to lie on integer texel bounds
- int iwidth = SkScalarCeilToInt(pathData->fBounds.width());
- int iheight = SkScalarCeilToInt(pathData->fBounds.height());
- // the quad rect before we scale needs to be the same size as the path data in the atlas
- SkScalar width = SkIntToScalar(iwidth);
- SkScalar height = SkIntToScalar(iheight);
+ SkScalar width = pathData->fBounds.width();
+ SkScalar height = pathData->fBounds.height();
SkScalar invScale = 1.0f/pathData->fScale;
dx *= invScale;
dy *= invScale;
width *= invScale;
height *= invScale;
-
- int u0 = pathData->fAtlasLocation.fX;
- int v0 = pathData->fAtlasLocation.fY;
- int u1 = u0 + iwidth;
- int v1 = v0 + iheight;
+
+ SkFixed tx = SkIntToFixed(pathData->fAtlasLocation.fX);
+ SkFixed ty = SkIntToFixed(pathData->fAtlasLocation.fY);
+ SkFixed tw = SkScalarToFixed(pathData->fBounds.width());
+ SkFixed th = SkScalarToFixed(pathData->fBounds.height());
+
// vertex positions
SkRect r = SkRect::MakeXYWH(dx, dy, width, height);
- size_t vertSize = sizeof(SkPoint) + sizeof(SkIPoint16);
+ size_t vertSize = 2 * sizeof(SkPoint);
SkPoint* positions = reinterpret_cast<SkPoint*>(vertices);
positions->setRectFan(r.left(), r.top(), r.right(), r.bottom(), vertSize);
// vertex texture coords
- intptr_t textureCoords = reinterpret_cast<intptr_t>(positions) + vertSize - sizeof(SkIPoint16);
- ((SkIPoint16*)(textureCoords + 0 * vertSize))->set(u0, v0);
- ((SkIPoint16*)(textureCoords + 1 * vertSize))->set(u0, v1);
- ((SkIPoint16*)(textureCoords + 2 * vertSize))->set(u1, v1);
- ((SkIPoint16*)(textureCoords + 3 * vertSize))->set(u1, v0);
+ intptr_t intPtr = reinterpret_cast<intptr_t>(positions);
+ SkPoint* textureCoords = reinterpret_cast<SkPoint*>(intPtr + vertSize - sizeof(SkPoint));
+ textureCoords->setRectFan(SkFixedToFloat(texture->texturePriv().normalizeFixedX(tx)),
+ SkFixedToFloat(texture->texturePriv().normalizeFixedY(ty)),
+ SkFixedToFloat(texture->texturePriv().normalizeFixedX(tx + tw)),
+ SkFixedToFloat(texture->texturePriv().normalizeFixedY(ty + th)),
+ vertSize);
viewMatrix.mapRect(&r);
target->setIndexSourceToBuffer(fContext->getQuadIndexBuffer());
« no previous file with comments | « include/gpu/GrTypesPriv.h ('k') | src/gpu/GrBitmapTextContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698