2 * Copyright 2016 Xamarin Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
9 #include "gl/GrGLInterface.h"
10 #include "gl/GrGLAssembleInterface.h"
12 #include "gr_context.h"
14 #include "sk_types_priv.h"
16 gr_context_t* gr_context_create(gr_backend_t backend, gr_backendcontext_t backendContext, const gr_context_options_t* options) {
17 return ToGrContext(GrContext::Create((GrBackend)backend, backendContext, AsGrContextOptions(*options)));
20 gr_context_t* gr_context_create_with_defaults(gr_backend_t backend, gr_backendcontext_t backendContext) {
21 return ToGrContext(GrContext::Create((GrBackend)backend, backendContext));
24 void gr_context_unref(gr_context_t* context) {
25 SkSafeUnref(AsGrContext(context));
28 void gr_context_abandon_context(gr_context_t* context) {
29 AsGrContext(context)->abandonContext();
32 void gr_context_release_resources_and_abandon_context(gr_context_t* context) {
33 AsGrContext(context)->releaseResourcesAndAbandonContext();
36 void gr_context_get_resource_cache_limits(gr_context_t* context, int* maxResources, size_t* maxResourceBytes) {
37 AsGrContext(context)->getResourceCacheLimits(maxResources, maxResourceBytes);
40 void gr_context_set_resource_cache_limits(gr_context_t* context, int maxResources, size_t maxResourceBytes) {
41 AsGrContext(context)->setResourceCacheLimits(maxResources, maxResourceBytes);
44 void gr_context_get_resource_cache_usage(gr_context_t* context, int* maxResources, size_t* maxResourceBytes) {
45 AsGrContext(context)->getResourceCacheUsage(maxResources, maxResourceBytes);
48 int gr_context_get_recommended_sample_count(gr_context_t* context, gr_pixelconfig_t config, float dpi) {
49 return AsGrContext(context)->getRecommendedSampleCount((GrPixelConfig)config, dpi);
52 void gr_context_flush(gr_context_t* context) {
53 AsGrContext(context)->flush();
57 const gr_glinterface_t* gr_glinterface_default_interface() {
58 return ToGrGLInterface(GrGLDefaultInterface());
61 const gr_glinterface_t* gr_glinterface_create_native_interface() {
62 return ToGrGLInterface(GrGLCreateNativeInterface());
65 const gr_glinterface_t* gr_glinterface_assemble_interface(void* ctx, gr_gl_get_proc get) {
66 return ToGrGLInterface(GrGLAssembleInterface(ctx, get));
69 const gr_glinterface_t* gr_glinterface_assemble_gl_interface(void* ctx, gr_gl_get_proc get) {
70 return ToGrGLInterface(GrGLAssembleGLInterface(ctx, get));
73 const gr_glinterface_t* gr_glinterface_assemble_gles_interface(void* ctx, gr_gl_get_proc get) {
74 return ToGrGLInterface(GrGLAssembleGLESInterface(ctx, get));
77 void gr_glinterface_unref(gr_glinterface_t* glInterface) {
78 SkSafeUnref(AsGrGLInterface(glInterface));
81 gr_glinterface_t* gr_glinterface_clone(gr_glinterface_t* glInterface) {
82 return ToGrGLInterface(GrGLInterface::NewClone(AsGrGLInterface(glInterface)));
85 bool gr_glinterface_validate(gr_glinterface_t* glInterface) {
86 return AsGrGLInterface(glInterface)->validate();
89 bool gr_glinterface_has_extension(gr_glinterface_t* glInterface, const char* extension) {
90 return AsGrGLInterface(glInterface)->hasExtension(extension);