1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "tools/gpu/FlushFinishTracker.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "include/gpu/GrDirectContext.h" 11cb93a386Sopenharmony_ci#include "src/core/SkTraceEvent.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#include <chrono> 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_cinamespace sk_gpu_test { 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_civoid FlushFinishTracker::waitTillFinished() { 18cb93a386Sopenharmony_ci TRACE_EVENT0("skia.gpu", TRACE_FUNC); 19cb93a386Sopenharmony_ci auto begin = std::chrono::steady_clock::now(); 20cb93a386Sopenharmony_ci auto end = begin; 21cb93a386Sopenharmony_ci while (!fIsFinished && (end - begin) < std::chrono::seconds(2)) { 22cb93a386Sopenharmony_ci fContext->checkAsyncWorkCompletion(); 23cb93a386Sopenharmony_ci end = std::chrono::steady_clock::now(); 24cb93a386Sopenharmony_ci } 25cb93a386Sopenharmony_ci if (!fIsFinished) { 26cb93a386Sopenharmony_ci SkDebugf("WARNING: Wait failed for flush sync. Timings might not be accurate.\n"); 27cb93a386Sopenharmony_ci } 28cb93a386Sopenharmony_ci} 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ci} //namespace sk_gpu_test 31