@@ -1641,8 +1641,9 @@ void OpenGLRenderer::setupDrawNoTexture() {
16411641 mCaches .disableTexCoordsVertexArray ();
16421642}
16431643
1644- void OpenGLRenderer::setupDrawAA () {
1644+ void OpenGLRenderer::setupDrawAA (bool useShadowInterp ) {
16451645 mDescription .isAA = true ;
1646+ mDescription .isShadowAA = useShadowInterp;
16461647}
16471648
16481649void OpenGLRenderer::setupDrawColor (int color, int alpha) {
@@ -2365,7 +2366,7 @@ status_t OpenGLRenderer::drawPatches(const SkBitmap* bitmap, AssetAtlas::Entry*
23652366}
23662367
23672368status_t OpenGLRenderer::drawVertexBuffer (float translateX, float translateY,
2368- const VertexBuffer& vertexBuffer, const SkPaint* paint, bool useOffset ) {
2369+ const VertexBuffer& vertexBuffer, const SkPaint* paint, int displayFlags ) {
23692370 // not missing call to quickReject/dirtyLayer, always done at a higher level
23702371 if (!vertexBuffer.getVertexCount ()) {
23712372 // no vertices to draw
@@ -2381,13 +2382,14 @@ status_t OpenGLRenderer::drawVertexBuffer(float translateX, float translateY,
23812382
23822383 setupDraw ();
23832384 setupDrawNoTexture ();
2384- if (isAA) setupDrawAA ();
2385+ if (isAA) setupDrawAA ((displayFlags & kVertexBuffer_ShadowAA ) );
23852386 setupDrawColor (color, ((color >> 24 ) & 0xFF ) * mSnapshot ->alpha );
23862387 setupDrawColorFilter (getColorFilter (paint));
23872388 setupDrawShader (getShader (paint));
23882389 setupDrawBlending (paint, isAA);
23892390 setupDrawProgram ();
2390- setupDrawModelView (kModelViewMode_Translate , useOffset, translateX, translateY, 0 , 0 );
2391+ setupDrawModelView (kModelViewMode_Translate , (displayFlags & kVertexBuffer_Offset ),
2392+ translateX, translateY, 0 , 0 );
23912393 setupDrawColorUniforms (getShader (paint));
23922394 setupDrawColorFilterUniforms (getColorFilter (paint));
23932395 setupDrawShaderUniforms (getShader (paint));
@@ -2397,7 +2399,6 @@ status_t OpenGLRenderer::drawVertexBuffer(float translateX, float translateY,
23972399 mCaches .bindPositionVertexPointer (true , vertices, isAA ? gAlphaVertexStride : gVertexStride );
23982400 mCaches .resetTexCoordsVertexPointer ();
23992401
2400-
24012402 int alphaSlot = -1 ;
24022403 if (isAA) {
24032404 void * alphaCoords = ((GLbyte*) vertices) + gVertexAlphaOffset ;
@@ -2466,8 +2467,8 @@ status_t OpenGLRenderer::drawLines(const float* points, int count, const SkPaint
24662467 return DrawGlInfo::kStatusDone ;
24672468 }
24682469
2469- bool useOffset = ! paint->isAntiAlias ();
2470- return drawVertexBuffer (buffer, paint, useOffset );
2470+ int displayFlags = paint->isAntiAlias () ? 0 : kVertexBuffer_Offset ;
2471+ return drawVertexBuffer (buffer, paint, displayFlags );
24712472}
24722473
24732474status_t OpenGLRenderer::drawPoints (const float * points, int count, const SkPaint* paint) {
@@ -2483,8 +2484,8 @@ status_t OpenGLRenderer::drawPoints(const float* points, int count, const SkPain
24832484 return DrawGlInfo::kStatusDone ;
24842485 }
24852486
2486- bool useOffset = ! paint->isAntiAlias ();
2487- return drawVertexBuffer (buffer, paint, useOffset );
2487+ int displayFlags = paint->isAntiAlias () ? 0 : kVertexBuffer_Offset ;
2488+ return drawVertexBuffer (buffer, paint, displayFlags );
24882489}
24892490
24902491status_t OpenGLRenderer::drawColor (int color, SkXfermode::Mode mode) {
@@ -3167,12 +3168,12 @@ status_t OpenGLRenderer::drawShadow(float casterAlpha,
31673168
31683169 if (ambientShadowVertexBuffer && mAmbientShadowAlpha > 0 ) {
31693170 paint.setARGB (casterAlpha * mAmbientShadowAlpha , 0 , 0 , 0 );
3170- drawVertexBuffer (*ambientShadowVertexBuffer, &paint);
3171+ drawVertexBuffer (*ambientShadowVertexBuffer, &paint, kVertexBuffer_ShadowAA );
31713172 }
31723173
31733174 if (spotShadowVertexBuffer && mSpotShadowAlpha > 0 ) {
31743175 paint.setARGB (casterAlpha * mSpotShadowAlpha , 0 , 0 , 0 );
3175- drawVertexBuffer (*spotShadowVertexBuffer, &paint);
3176+ drawVertexBuffer (*spotShadowVertexBuffer, &paint, kVertexBuffer_ShadowAA );
31763177 }
31773178
31783179 return DrawGlInfo::kStatusDrew ;
0 commit comments