diff --git a/include/c/gr_context.h b/include/c/gr_context.h index 234f9a1a1aa9..cc3042ae502b 100644 --- a/include/c/gr_context.h +++ b/include/c/gr_context.h @@ -43,6 +43,8 @@ SK_C_API void gr_direct_context_get_resource_cache_usage(gr_direct_context_t* co SK_C_API void gr_direct_context_flush(gr_direct_context_t* context); SK_C_API bool gr_direct_context_submit(gr_direct_context_t* context, bool syncCpu); SK_C_API void gr_direct_context_flush_and_submit(gr_direct_context_t* context, bool syncCpu); +SK_C_API void gr_direct_context_flush_image(gr_direct_context_t* context, const sk_image_t* image); +SK_C_API void gr_direct_context_flush_surface(gr_direct_context_t* context, sk_surface_t* surface); SK_C_API void gr_direct_context_reset_context(gr_direct_context_t* context, uint32_t state); SK_C_API void gr_direct_context_dump_memory_statistics(const gr_direct_context_t* context, sk_tracememorydump_t* dump); SK_C_API void gr_direct_context_free_gpu_resources(gr_direct_context_t* context); diff --git a/src/c/gr_context.cpp b/src/c/gr_context.cpp index adcaf69ee2ee..ca73f19f42a4 100644 --- a/src/c/gr_context.cpp +++ b/src/c/gr_context.cpp @@ -7,6 +7,9 @@ * found in the LICENSE file. */ +#include "include/core/SkImage.h" +#include "include/core/SkSurface.h" + #include "include/c/gr_context.h" #include "src/c/sk_types_priv.h" @@ -115,6 +118,14 @@ void gr_direct_context_flush_and_submit(gr_direct_context_t* context, bool syncC SK_ONLY_GPU(AsGrDirectContext(context)->flushAndSubmit(syncCpu)); } +void gr_direct_context_flush_image(gr_direct_context_t* context, const sk_image_t* image) { + SK_ONLY_GPU(AsGrDirectContext(context)->flush(sk_ref_sp(AsImage(image)))); +} + +void gr_direct_context_flush_surface(gr_direct_context_t* context, sk_surface_t* surface) { + SK_ONLY_GPU(AsGrDirectContext(context)->flush(sk_ref_sp(AsSurface(surface)))); +} + void gr_direct_context_reset_context(gr_direct_context_t* context, uint32_t state) { SK_ONLY_GPU(AsGrDirectContext(context)->resetContext(state)); }