| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "GrContext.h" | 10 #include "GrContext.h" |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 } | 637 } |
| 638 return true; | 638 return true; |
| 639 } | 639 } |
| 640 | 640 |
| 641 | 641 |
| 642 //////////////////////////////////////////////////////////////////////////////// | 642 //////////////////////////////////////////////////////////////////////////////// |
| 643 | 643 |
| 644 void GrContext::clear(const SkIRect* rect, | 644 void GrContext::clear(const SkIRect* rect, |
| 645 const GrColor color, | 645 const GrColor color, |
| 646 bool canIgnoreRect, | 646 bool canIgnoreRect, |
| 647 GrRenderTarget* target) { | 647 GrRenderTarget* renderTarget) { |
| 648 ASSERT_OWNED_RESOURCE(renderTarget); |
| 648 AutoRestoreEffects are; | 649 AutoRestoreEffects are; |
| 649 AutoCheckFlush acf(this); | 650 AutoCheckFlush acf(this); |
| 650 GR_CREATE_TRACE_MARKER_CONTEXT("GrContext::clear", this); | 651 GR_CREATE_TRACE_MARKER_CONTEXT("GrContext::clear", this); |
| 651 this->prepareToDraw(NULL, BUFFERED_DRAW, &are, &acf)->clear(rect, color, | 652 GrDrawTarget* target = this->prepareToDraw(NULL, BUFFERED_DRAW, &are, &acf); |
| 652 canIgnoreRect, t
arget); | 653 if (NULL == target) { |
| 654 return; |
| 655 } |
| 656 target->clear(rect, color, canIgnoreRect, renderTarget); |
| 653 } | 657 } |
| 654 | 658 |
| 655 void GrContext::drawPaint(const GrPaint& origPaint) { | 659 void GrContext::drawPaint(const GrPaint& origPaint) { |
| 656 // set rect to be big enough to fill the space, but not super-huge, so we | 660 // set rect to be big enough to fill the space, but not super-huge, so we |
| 657 // don't overflow fixed-point implementations | 661 // don't overflow fixed-point implementations |
| 658 SkRect r; | 662 SkRect r; |
| 659 r.setLTRB(0, 0, | 663 r.setLTRB(0, 0, |
| 660 SkIntToScalar(getRenderTarget()->width()), | 664 SkIntToScalar(getRenderTarget()->width()), |
| 661 SkIntToScalar(getRenderTarget()->height())); | 665 SkIntToScalar(getRenderTarget()->height())); |
| 662 SkMatrix inverse; | 666 SkMatrix inverse; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 if (NULL != strokeInfo && strokeInfo->isDashed()) { | 791 if (NULL != strokeInfo && strokeInfo->isDashed()) { |
| 788 SkPath path; | 792 SkPath path; |
| 789 path.addRect(rect); | 793 path.addRect(rect); |
| 790 this->drawPath(paint, path, *strokeInfo); | 794 this->drawPath(paint, path, *strokeInfo); |
| 791 return; | 795 return; |
| 792 } | 796 } |
| 793 | 797 |
| 794 AutoRestoreEffects are; | 798 AutoRestoreEffects are; |
| 795 AutoCheckFlush acf(this); | 799 AutoCheckFlush acf(this); |
| 796 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 800 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 801 if (NULL == target) { |
| 802 return; |
| 803 } |
| 797 | 804 |
| 798 GR_CREATE_TRACE_MARKER("GrContext::drawRect", target); | 805 GR_CREATE_TRACE_MARKER("GrContext::drawRect", target); |
| 799 SkScalar width = NULL == strokeInfo ? -1 : strokeInfo->getStrokeRec().getWid
th(); | 806 SkScalar width = NULL == strokeInfo ? -1 : strokeInfo->getStrokeRec().getWid
th(); |
| 800 SkMatrix combinedMatrix = target->drawState()->getViewMatrix(); | 807 SkMatrix combinedMatrix = target->drawState()->getViewMatrix(); |
| 801 if (NULL != matrix) { | 808 if (NULL != matrix) { |
| 802 combinedMatrix.preConcat(*matrix); | 809 combinedMatrix.preConcat(*matrix); |
| 803 } | 810 } |
| 804 | 811 |
| 805 // Check if this is a full RT draw and can be replaced with a clear. We don'
t bother checking | 812 // Check if this is a full RT draw and can be replaced with a clear. We don'
t bother checking |
| 806 // cases where the RT is fully inside a stroke. | 813 // cases where the RT is fully inside a stroke. |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 } | 918 } |
| 912 | 919 |
| 913 void GrContext::drawRectToRect(const GrPaint& paint, | 920 void GrContext::drawRectToRect(const GrPaint& paint, |
| 914 const SkRect& dstRect, | 921 const SkRect& dstRect, |
| 915 const SkRect& localRect, | 922 const SkRect& localRect, |
| 916 const SkMatrix* dstMatrix, | 923 const SkMatrix* dstMatrix, |
| 917 const SkMatrix* localMatrix) { | 924 const SkMatrix* localMatrix) { |
| 918 AutoRestoreEffects are; | 925 AutoRestoreEffects are; |
| 919 AutoCheckFlush acf(this); | 926 AutoCheckFlush acf(this); |
| 920 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 927 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 928 if (NULL == target) { |
| 929 return; |
| 930 } |
| 921 | 931 |
| 922 GR_CREATE_TRACE_MARKER("GrContext::drawRectToRect", target); | 932 GR_CREATE_TRACE_MARKER("GrContext::drawRectToRect", target); |
| 923 | 933 |
| 924 target->drawRect(dstRect, dstMatrix, &localRect, localMatrix); | 934 target->drawRect(dstRect, dstMatrix, &localRect, localMatrix); |
| 925 } | 935 } |
| 926 | 936 |
| 927 namespace { | 937 namespace { |
| 928 | 938 |
| 929 extern const GrVertexAttrib gPosUVColorAttribs[] = { | 939 extern const GrVertexAttrib gPosUVColorAttribs[] = { |
| 930 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding }, | 940 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding }, |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 const SkPoint positions[], | 978 const SkPoint positions[], |
| 969 const SkPoint texCoords[], | 979 const SkPoint texCoords[], |
| 970 const GrColor colors[], | 980 const GrColor colors[], |
| 971 const uint16_t indices[], | 981 const uint16_t indices[], |
| 972 int indexCount) { | 982 int indexCount) { |
| 973 AutoRestoreEffects are; | 983 AutoRestoreEffects are; |
| 974 AutoCheckFlush acf(this); | 984 AutoCheckFlush acf(this); |
| 975 GrDrawTarget::AutoReleaseGeometry geo; // must be inside AutoCheckFlush scop
e | 985 GrDrawTarget::AutoReleaseGeometry geo; // must be inside AutoCheckFlush scop
e |
| 976 | 986 |
| 977 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 987 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 988 if (NULL == target) { |
| 989 return; |
| 990 } |
| 978 GrDrawState* drawState = target->drawState(); | 991 GrDrawState* drawState = target->drawState(); |
| 979 | 992 |
| 980 GR_CREATE_TRACE_MARKER("GrContext::drawVertices", target); | 993 GR_CREATE_TRACE_MARKER("GrContext::drawVertices", target); |
| 981 | 994 |
| 982 int colorOffset = -1, texOffset = -1; | 995 int colorOffset = -1, texOffset = -1; |
| 983 set_vertex_attributes(drawState, texCoords, colors, &colorOffset, &texOffset
); | 996 set_vertex_attributes(drawState, texCoords, colors, &colorOffset, &texOffset
); |
| 984 | 997 |
| 985 size_t vertexSize = drawState->getVertexSize(); | 998 size_t vertexSize = drawState->getVertexSize(); |
| 986 if (sizeof(SkPoint) != vertexSize) { | 999 if (sizeof(SkPoint) != vertexSize) { |
| 987 if (!geo.set(target, vertexCount, 0)) { | 1000 if (!geo.set(target, vertexCount, 0)) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1029 if (strokeInfo.isDashed()) { | 1042 if (strokeInfo.isDashed()) { |
| 1030 SkPath path; | 1043 SkPath path; |
| 1031 path.addRRect(rrect); | 1044 path.addRRect(rrect); |
| 1032 this->drawPath(paint, path, strokeInfo); | 1045 this->drawPath(paint, path, strokeInfo); |
| 1033 return; | 1046 return; |
| 1034 } | 1047 } |
| 1035 | 1048 |
| 1036 AutoRestoreEffects are; | 1049 AutoRestoreEffects are; |
| 1037 AutoCheckFlush acf(this); | 1050 AutoCheckFlush acf(this); |
| 1038 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 1051 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 1052 if (NULL == target) { |
| 1053 return; |
| 1054 } |
| 1039 | 1055 |
| 1040 GR_CREATE_TRACE_MARKER("GrContext::drawRRect", target); | 1056 GR_CREATE_TRACE_MARKER("GrContext::drawRRect", target); |
| 1041 | 1057 |
| 1042 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); | 1058 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); |
| 1043 | 1059 |
| 1044 if (!fOvalRenderer->drawRRect(target, this, paint.isAntiAlias(), rrect, stro
keRec)) { | 1060 if (!fOvalRenderer->drawRRect(target, this, paint.isAntiAlias(), rrect, stro
keRec)) { |
| 1045 SkPath path; | 1061 SkPath path; |
| 1046 path.addRRect(rrect); | 1062 path.addRRect(rrect); |
| 1047 this->internalDrawPath(target, paint.isAntiAlias(), path, strokeInfo); | 1063 this->internalDrawPath(target, paint.isAntiAlias(), path, strokeInfo); |
| 1048 } | 1064 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1086 if (strokeInfo.isDashed()) { | 1102 if (strokeInfo.isDashed()) { |
| 1087 SkPath path; | 1103 SkPath path; |
| 1088 path.addOval(oval); | 1104 path.addOval(oval); |
| 1089 this->drawPath(paint, path, strokeInfo); | 1105 this->drawPath(paint, path, strokeInfo); |
| 1090 return; | 1106 return; |
| 1091 } | 1107 } |
| 1092 | 1108 |
| 1093 AutoRestoreEffects are; | 1109 AutoRestoreEffects are; |
| 1094 AutoCheckFlush acf(this); | 1110 AutoCheckFlush acf(this); |
| 1095 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 1111 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 1112 if (NULL == target) { |
| 1113 return; |
| 1114 } |
| 1096 | 1115 |
| 1097 GR_CREATE_TRACE_MARKER("GrContext::drawOval", target); | 1116 GR_CREATE_TRACE_MARKER("GrContext::drawOval", target); |
| 1098 | 1117 |
| 1099 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); | 1118 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); |
| 1100 | 1119 |
| 1101 | 1120 |
| 1102 if (!fOvalRenderer->drawOval(target, this, paint.isAntiAlias(), oval, stroke
Rec)) { | 1121 if (!fOvalRenderer->drawOval(target, this, paint.isAntiAlias(), oval, stroke
Rec)) { |
| 1103 SkPath path; | 1122 SkPath path; |
| 1104 path.addOval(oval); | 1123 path.addOval(oval); |
| 1105 this->internalDrawPath(target, paint.isAntiAlias(), path, strokeInfo); | 1124 this->internalDrawPath(target, paint.isAntiAlias(), path, strokeInfo); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1169 } | 1188 } |
| 1170 return; | 1189 return; |
| 1171 } | 1190 } |
| 1172 | 1191 |
| 1173 if (strokeInfo.isDashed()) { | 1192 if (strokeInfo.isDashed()) { |
| 1174 SkPoint pts[2]; | 1193 SkPoint pts[2]; |
| 1175 if (path.isLine(pts)) { | 1194 if (path.isLine(pts)) { |
| 1176 AutoRestoreEffects are; | 1195 AutoRestoreEffects are; |
| 1177 AutoCheckFlush acf(this); | 1196 AutoCheckFlush acf(this); |
| 1178 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &a
re, &acf); | 1197 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &a
re, &acf); |
| 1198 if (NULL == target) { |
| 1199 return; |
| 1200 } |
| 1179 GrDrawState* drawState = target->drawState(); | 1201 GrDrawState* drawState = target->drawState(); |
| 1180 | 1202 |
| 1181 SkMatrix origViewMatrix = drawState->getViewMatrix(); | 1203 SkMatrix origViewMatrix = drawState->getViewMatrix(); |
| 1182 GrDrawState::AutoViewMatrixRestore avmr; | 1204 GrDrawState::AutoViewMatrixRestore avmr; |
| 1183 if (avmr.setIdentity(target->drawState())) { | 1205 if (avmr.setIdentity(target->drawState())) { |
| 1184 if (GrDashingEffect::DrawDashLine(pts, paint, strokeInfo, fGpu,
target, | 1206 if (GrDashingEffect::DrawDashLine(pts, paint, strokeInfo, fGpu,
target, |
| 1185 origViewMatrix)) { | 1207 origViewMatrix)) { |
| 1186 return; | 1208 return; |
| 1187 } | 1209 } |
| 1188 } | 1210 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1203 } | 1225 } |
| 1204 | 1226 |
| 1205 // Note that internalDrawPath may sw-rasterize the path into a scratch textu
re. | 1227 // Note that internalDrawPath may sw-rasterize the path into a scratch textu
re. |
| 1206 // Scratch textures can be recycled after they are returned to the texture | 1228 // Scratch textures can be recycled after they are returned to the texture |
| 1207 // cache. This presents a potential hazard for buffered drawing. However, | 1229 // cache. This presents a potential hazard for buffered drawing. However, |
| 1208 // the writePixels that uploads to the scratch will perform a flush so we're | 1230 // the writePixels that uploads to the scratch will perform a flush so we're |
| 1209 // OK. | 1231 // OK. |
| 1210 AutoRestoreEffects are; | 1232 AutoRestoreEffects are; |
| 1211 AutoCheckFlush acf(this); | 1233 AutoCheckFlush acf(this); |
| 1212 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); | 1234 GrDrawTarget* target = this->prepareToDraw(&paint, BUFFERED_DRAW, &are, &acf
); |
| 1235 if (NULL == target) { |
| 1236 return; |
| 1237 } |
| 1213 GrDrawState* drawState = target->drawState(); | 1238 GrDrawState* drawState = target->drawState(); |
| 1214 | 1239 |
| 1215 GR_CREATE_TRACE_MARKER1("GrContext::drawPath", target, "Is Convex", path.isC
onvex()); | 1240 GR_CREATE_TRACE_MARKER1("GrContext::drawPath", target, "Is Convex", path.isC
onvex()); |
| 1216 | 1241 |
| 1217 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); | 1242 const SkStrokeRec& strokeRec = strokeInfo.getStrokeRec(); |
| 1218 | 1243 |
| 1219 bool useCoverageAA = paint.isAntiAlias() && !drawState->getRenderTarget()->i
sMultisampled(); | 1244 bool useCoverageAA = paint.isAntiAlias() && !drawState->getRenderTarget()->i
sMultisampled(); |
| 1220 | 1245 |
| 1221 if (useCoverageAA && strokeRec.getWidth() < 0 && !path.isConvex()) { | 1246 if (useCoverageAA && strokeRec.getWidth() < 0 && !path.isConvex()) { |
| 1222 // Concave AA paths are expensive - try to avoid them for special cases | 1247 // Concave AA paths are expensive - try to avoid them for special cases |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1532 return true; | 1557 return true; |
| 1533 } | 1558 } |
| 1534 | 1559 |
| 1535 void GrContext::resolveRenderTarget(GrRenderTarget* target) { | 1560 void GrContext::resolveRenderTarget(GrRenderTarget* target) { |
| 1536 SkASSERT(target); | 1561 SkASSERT(target); |
| 1537 ASSERT_OWNED_RESOURCE(target); | 1562 ASSERT_OWNED_RESOURCE(target); |
| 1538 // In the future we may track whether there are any pending draws to this | 1563 // In the future we may track whether there are any pending draws to this |
| 1539 // target. We don't today so we always perform a flush. We don't promise | 1564 // target. We don't today so we always perform a flush. We don't promise |
| 1540 // this to our clients, though. | 1565 // this to our clients, though. |
| 1541 this->flush(); | 1566 this->flush(); |
| 1542 fGpu->resolveRenderTarget(target); | 1567 if (NULL != fGpu) { |
| 1568 fGpu->resolveRenderTarget(target); |
| 1569 } |
| 1543 } | 1570 } |
| 1544 | 1571 |
| 1545 void GrContext::discardRenderTarget(GrRenderTarget* target) { | 1572 void GrContext::discardRenderTarget(GrRenderTarget* renderTarget) { |
| 1546 SkASSERT(target); | 1573 SkASSERT(renderTarget); |
| 1547 ASSERT_OWNED_RESOURCE(target); | 1574 ASSERT_OWNED_RESOURCE(renderTarget); |
| 1548 AutoRestoreEffects are; | 1575 AutoRestoreEffects are; |
| 1549 AutoCheckFlush acf(this); | 1576 AutoCheckFlush acf(this); |
| 1550 this->prepareToDraw(NULL, BUFFERED_DRAW, &are, &acf)->discard(target); | 1577 GrDrawTarget* target = this->prepareToDraw(NULL, BUFFERED_DRAW, &are, &acf); |
| 1578 if (NULL == target) { |
| 1579 return; |
| 1580 } |
| 1581 target->discard(renderTarget); |
| 1551 } | 1582 } |
| 1552 | 1583 |
| 1553 void GrContext::copyTexture(GrTexture* src, GrRenderTarget* dst, const SkIPoint*
topLeft) { | 1584 void GrContext::copyTexture(GrTexture* src, GrRenderTarget* dst, const SkIPoint*
topLeft) { |
| 1554 if (NULL == src || NULL == dst) { | 1585 if (NULL == src || NULL == dst) { |
| 1555 return; | 1586 return; |
| 1556 } | 1587 } |
| 1557 ASSERT_OWNED_RESOURCE(src); | 1588 ASSERT_OWNED_RESOURCE(src); |
| 1558 | 1589 |
| 1559 // Writes pending to the source texture are not tracked, so a flush | 1590 // Writes pending to the source texture are not tracked, so a flush |
| 1560 // is required to ensure that the copy captures the most recent contents | 1591 // is required to ensure that the copy captures the most recent contents |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1711 //////////////////////////////////////////////////////////////////////////////// | 1742 //////////////////////////////////////////////////////////////////////////////// |
| 1712 | 1743 |
| 1713 GrDrawTarget* GrContext::prepareToDraw(const GrPaint* paint, | 1744 GrDrawTarget* GrContext::prepareToDraw(const GrPaint* paint, |
| 1714 BufferedDraw buffered, | 1745 BufferedDraw buffered, |
| 1715 AutoRestoreEffects* are, | 1746 AutoRestoreEffects* are, |
| 1716 AutoCheckFlush* acf) { | 1747 AutoCheckFlush* acf) { |
| 1717 // All users of this draw state should be freeing up all effects when they'r
e done. | 1748 // All users of this draw state should be freeing up all effects when they'r
e done. |
| 1718 // Otherwise effects that own resources may keep those resources alive indef
initely. | 1749 // Otherwise effects that own resources may keep those resources alive indef
initely. |
| 1719 SkASSERT(0 == fDrawState->numColorStages() && 0 == fDrawState->numCoverageSt
ages()); | 1750 SkASSERT(0 == fDrawState->numColorStages() && 0 == fDrawState->numCoverageSt
ages()); |
| 1720 | 1751 |
| 1752 if (NULL == fGpu) { |
| 1753 return NULL; |
| 1754 } |
| 1755 |
| 1721 if (kNo_BufferedDraw == buffered && kYes_BufferedDraw == fLastDrawWasBuffere
d) { | 1756 if (kNo_BufferedDraw == buffered && kYes_BufferedDraw == fLastDrawWasBuffere
d) { |
| 1722 fDrawBuffer->flush(); | 1757 fDrawBuffer->flush(); |
| 1723 fLastDrawWasBuffered = kNo_BufferedDraw; | 1758 fLastDrawWasBuffered = kNo_BufferedDraw; |
| 1724 } | 1759 } |
| 1725 ASSERT_OWNED_RESOURCE(fRenderTarget.get()); | 1760 ASSERT_OWNED_RESOURCE(fRenderTarget.get()); |
| 1726 if (NULL != paint) { | 1761 if (NULL != paint) { |
| 1727 SkASSERT(NULL != are); | 1762 SkASSERT(NULL != are); |
| 1728 SkASSERT(NULL != acf); | 1763 SkASSERT(NULL != acf); |
| 1729 are->set(fDrawState); | 1764 are->set(fDrawState); |
| 1730 fDrawState->setFromPaint(*paint, fViewMatrix, fRenderTarget.get()); | 1765 fDrawState->setFromPaint(*paint, fViewMatrix, fRenderTarget.get()); |
| 1731 #if GR_DEBUG_PARTIAL_COVERAGE_CHECK | 1766 #if GR_DEBUG_PARTIAL_COVERAGE_CHECK |
| 1732 if ((paint->hasMask() || 0xff != paint->fCoverage) && | 1767 if ((paint->hasMask() || 0xff != paint->fCoverage) && |
| 1733 !fGpu->canApplyCoverage()) { | 1768 !fGpu->canApplyCoverage()) { |
| 1734 GrPrintf("Partial pixel coverage will be incorrectly blended.\n"); | 1769 GrPrintf("Partial pixel coverage will be incorrectly blended.\n"); |
| 1735 } | 1770 } |
| 1736 #endif | 1771 #endif |
| 1772 if (fDrawState->getBlendOpts() & GrDrawState::kSkipDraw_BlendOptFlag) { |
| 1773 are->set(NULL); |
| 1774 return NULL; |
| 1775 } |
| 1737 } else { | 1776 } else { |
| 1738 fDrawState->reset(fViewMatrix); | 1777 fDrawState->reset(fViewMatrix); |
| 1739 fDrawState->setRenderTarget(fRenderTarget.get()); | 1778 fDrawState->setRenderTarget(fRenderTarget.get()); |
| 1740 } | 1779 } |
| 1741 GrDrawTarget* target; | 1780 GrDrawTarget* target; |
| 1742 if (kYes_BufferedDraw == buffered) { | 1781 if (kYes_BufferedDraw == buffered) { |
| 1743 fLastDrawWasBuffered = kYes_BufferedDraw; | 1782 fLastDrawWasBuffered = kYes_BufferedDraw; |
| 1744 target = fDrawBuffer; | 1783 target = fDrawBuffer; |
| 1745 } else { | 1784 } else { |
| 1746 SkASSERT(kNo_BufferedDraw == buffered); | 1785 SkASSERT(kNo_BufferedDraw == buffered); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1920 fDrawBuffer->removeGpuTraceMarker(marker); | 1959 fDrawBuffer->removeGpuTraceMarker(marker); |
| 1921 } | 1960 } |
| 1922 } | 1961 } |
| 1923 | 1962 |
| 1924 /////////////////////////////////////////////////////////////////////////////// | 1963 /////////////////////////////////////////////////////////////////////////////// |
| 1925 #if GR_CACHE_STATS | 1964 #if GR_CACHE_STATS |
| 1926 void GrContext::printCacheStats() const { | 1965 void GrContext::printCacheStats() const { |
| 1927 fResourceCache->printStats(); | 1966 fResourceCache->printStats(); |
| 1928 } | 1967 } |
| 1929 #endif | 1968 #endif |
| OLD | NEW |