Ejemplo n.º 1
0
void VisualBench::resetTimingState() {
    fCurrentFrame = 0;
    fTimer = WallTimer();
    this->resetContext();
}
Ejemplo n.º 2
0
void TimingStateMachine::resetTimingState() {
    fCurrentFrame = 0;
    fTimer = WallTimer();
}
Ejemplo n.º 3
0
void VisualBench::draw(SkCanvas* canvas) {
    if (!this->advanceRecordIfNecessary()) {
        this->closeWindow();
        return;
    }
    this->renderFrame(canvas);
    switch (fState) {
        case kPreWarmLoops_State: {
            this->preWarm(kTuneLoops_State);
            break;
        }
        case kTuneLoops_State: {
            if (1 << 30 == fLoops) {
                // We're about to wrap.  Something's wrong with the bench.
                SkDebugf("InnerLoops wrapped\n");
                fLoops = 0;
            } else {
                fTimer.end();
                double elapsed = fTimer.fWall;
                if (elapsed > FLAGS_loopMs) {
                    fState = kPreWarmTiming_State;

                    // Scale back the number of loops
                    fLoops = (int)ceil(fLoops * FLAGS_loopMs / elapsed);
                    fFlushes = (int)ceil(FLAGS_flushMs / elapsed);
                } else {
                    fState = kPreWarmLoops_State;
                    fLoops *= 2;
                }

                fCurrentFrame = 0;
                fTimer = WallTimer();
                this->resetContext();
            }
            break;
        }
        case kPreWarmTiming_State: {
            this->preWarm(kTiming_State);
            break;
        }
        case kTiming_State: {
            if (fCurrentFrame >= FLAGS_frames) {
                fTimer.end();
                fRecords[fCurrentPictureIdx].fMeasurements.push_back(
                        fTimer.fWall / (FLAGS_frames * fLoops * fFlushes));
                if (fCurrentSample++ >= FLAGS_samples) {
                    fState = kPreWarmLoops_State;
                    this->printStats();
                    fPicture.reset(NULL);
                    fCurrentSample = 0;
                    fFlushes = 1;
                    fLoops = 1;
                } else {
                    fState = kPreWarmTiming_State;
                }
                fTimer = WallTimer();
                this->resetContext();
                fCurrentFrame = 0;
            } else {
                fCurrentFrame++;
            }
            break;
        }
    }

    // Invalidate the window to force a redraw. Poor man's animation mechanism.
    this->inval(NULL);
}
Ejemplo n.º 4
0
void VisualInteractiveModule::resetTimingState() {
    fCurrentFrame = 0;
    fTimer = WallTimer();
    fOwner->reset();
}