| /* |
| * 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 |