/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GpuTools_DEFINED #define GpuTools_DEFINED #include "include/core/SkSurface.h" #if defined(SK_GANESH) #include "include/gpu/ganesh/SkSurfaceGanesh.h" #endif #if defined(SK_GRAPHITE) #include "src/gpu/graphite/Surface_Graphite.h" #endif namespace skgpu { // Flush any surface, even if we don't know what GPU backend it is for. This keeps the // comparisons between Ganesh and Graphite more fair as the latter can do more batching // unless we explicitly perform flushes. inline void Flush(SkSurface* surface) { #if defined(SK_GANESH) skgpu::ganesh::Flush(surface); #endif #if defined(SK_GRAPHITE) skgpu::graphite::Flush(surface); #endif } inline void FlushAndSubmit(SkSurface* surface) { #if defined(SK_GANESH) skgpu::ganesh::FlushAndSubmit(surface); #endif #if defined(SK_GRAPHITE) // Graphite doesn't have a "flush and submit" equivalent skgpu::graphite::Flush(surface); #endif } } #endif