Enable quickRejectY in SkCanvas to be inlined.
This CL was tested against the picturePlayback bench and showed an approx 10-13% improvement on Android when playing back text. Review URL: https://codereview.appspot.com/5687083 git-svn-id: http://skia.googlecode.com/svn/trunk@3259 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
0b5b0ce39c
commit
42bbef71c7
@ -429,7 +429,13 @@ public:
|
|||||||
@return true if the horizontal band is completely clipped out (i.e. does
|
@return true if the horizontal band is completely clipped out (i.e. does
|
||||||
not intersect the current clip)
|
not intersect the current clip)
|
||||||
*/
|
*/
|
||||||
bool quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const;
|
bool quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const {
|
||||||
|
SkASSERT(SkScalarToCompareType(top) >= SkScalarToCompareType(bottom));
|
||||||
|
|
||||||
|
const SkRectCompareType& clipR = this->getLocalClipBoundsCompareType(et);
|
||||||
|
return SkScalarToCompareType(top) >= clipR.fBottom ||
|
||||||
|
SkScalarToCompareType(bottom) <= clipR.fTop;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return the bounds of the current clip (in local coordinates) in the
|
/** Return the bounds of the current clip (in local coordinates) in the
|
||||||
bounds parameter, and return true if it is non-empty. This can be useful
|
bounds parameter, and return true if it is non-empty. This can be useful
|
||||||
|
@ -1184,30 +1184,6 @@ bool SkCanvas::quickReject(const SkPath& path, EdgeType et) const {
|
|||||||
return path.isEmpty() || this->quickReject(path.getBounds(), et);
|
return path.isEmpty() || this->quickReject(path.getBounds(), et);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SkCanvas::quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const {
|
|
||||||
/* current impl ignores edgetype, and relies on
|
|
||||||
getLocalClipBoundsCompareType(), which always returns a value assuming
|
|
||||||
antialiasing (worst case)
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (fMCRec->fRasterClip->isEmpty()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
SkScalarCompareType userT = SkScalarToCompareType(top);
|
|
||||||
SkScalarCompareType userB = SkScalarToCompareType(bottom);
|
|
||||||
|
|
||||||
// check for invalid user Y coordinates (i.e. empty)
|
|
||||||
// reed: why do we need to do this check, since it slows us down?
|
|
||||||
if (userT >= userB) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if we are above or below the local clip bounds
|
|
||||||
const SkRectCompareType& clipR = this->getLocalClipBoundsCompareType();
|
|
||||||
return userT >= clipR.fBottom || userB <= clipR.fTop;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int pinIntForScalar(int x) {
|
static inline int pinIntForScalar(int x) {
|
||||||
#ifdef SK_SCALAR_IS_FIXED
|
#ifdef SK_SCALAR_IS_FIXED
|
||||||
if (x < SK_MinS16) {
|
if (x < SK_MinS16) {
|
||||||
|
Loading…
Reference in New Issue
Block a user