1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/ganesh/GrContext_Base.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrBackendSurface.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrContextOptions.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrContextThreadSafeProxy.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ShaderErrorHandler.h" 14*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkAssert.h" 15*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrBaseContextPriv.h" 16*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrContextThreadSafeProxyPriv.h" 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker #include <utility> 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker enum SkColorType : int; 21*c8dee2aaSAndroid Build Coastguard Worker GrContext_Base(sk_sp<GrContextThreadSafeProxy> proxy)22*c8dee2aaSAndroid Build Coastguard WorkerGrContext_Base::GrContext_Base(sk_sp<GrContextThreadSafeProxy> proxy) 23*c8dee2aaSAndroid Build Coastguard Worker : fThreadSafeProxy(std::move(proxy)) { 24*c8dee2aaSAndroid Build Coastguard Worker } 25*c8dee2aaSAndroid Build Coastguard Worker ~GrContext_Base()26*c8dee2aaSAndroid Build Coastguard WorkerGrContext_Base::~GrContext_Base() { } 27*c8dee2aaSAndroid Build Coastguard Worker init()28*c8dee2aaSAndroid Build Coastguard Workerbool GrContext_Base::init() { 29*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(fThreadSafeProxy->isValid()); 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker return true; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker contextID() const34*c8dee2aaSAndroid Build Coastguard Workeruint32_t GrContext_Base::contextID() const { return fThreadSafeProxy->priv().contextID(); } backend() const35*c8dee2aaSAndroid Build Coastguard WorkerGrBackendApi GrContext_Base::backend() const { return fThreadSafeProxy->priv().backend(); } 36*c8dee2aaSAndroid Build Coastguard Worker options() const37*c8dee2aaSAndroid Build Coastguard Workerconst GrContextOptions& GrContext_Base::options() const { 38*c8dee2aaSAndroid Build Coastguard Worker return fThreadSafeProxy->priv().options(); 39*c8dee2aaSAndroid Build Coastguard Worker } 40*c8dee2aaSAndroid Build Coastguard Worker caps() const41*c8dee2aaSAndroid Build Coastguard Workerconst GrCaps* GrContext_Base::caps() const { return fThreadSafeProxy->priv().caps(); } refCaps() const42*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrCaps> GrContext_Base::refCaps() const { return fThreadSafeProxy->priv().refCaps(); } 43*c8dee2aaSAndroid Build Coastguard Worker defaultBackendFormat(SkColorType skColorType,GrRenderable renderable) const44*c8dee2aaSAndroid Build Coastguard WorkerGrBackendFormat GrContext_Base::defaultBackendFormat(SkColorType skColorType, 45*c8dee2aaSAndroid Build Coastguard Worker GrRenderable renderable) const { 46*c8dee2aaSAndroid Build Coastguard Worker return fThreadSafeProxy->defaultBackendFormat(skColorType, renderable); 47*c8dee2aaSAndroid Build Coastguard Worker } 48*c8dee2aaSAndroid Build Coastguard Worker compressedBackendFormat(SkTextureCompressionType c) const49*c8dee2aaSAndroid Build Coastguard WorkerGrBackendFormat GrContext_Base::compressedBackendFormat(SkTextureCompressionType c) const { 50*c8dee2aaSAndroid Build Coastguard Worker return fThreadSafeProxy->compressedBackendFormat(c); 51*c8dee2aaSAndroid Build Coastguard Worker } 52*c8dee2aaSAndroid Build Coastguard Worker maxSurfaceSampleCountForColorType(SkColorType colorType) const53*c8dee2aaSAndroid Build Coastguard Workerint GrContext_Base::maxSurfaceSampleCountForColorType(SkColorType colorType) const { 54*c8dee2aaSAndroid Build Coastguard Worker return fThreadSafeProxy->maxSurfaceSampleCountForColorType(colorType); 55*c8dee2aaSAndroid Build Coastguard Worker } 56*c8dee2aaSAndroid Build Coastguard Worker threadSafeProxy()57*c8dee2aaSAndroid Build Coastguard Workersk_sp<GrContextThreadSafeProxy> GrContext_Base::threadSafeProxy() { return fThreadSafeProxy; } 58*c8dee2aaSAndroid Build Coastguard Worker 59*c8dee2aaSAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////// refCaps() const60*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrCaps> GrBaseContextPriv::refCaps() const { 61*c8dee2aaSAndroid Build Coastguard Worker return this->context()->refCaps(); 62*c8dee2aaSAndroid Build Coastguard Worker } 63*c8dee2aaSAndroid Build Coastguard Worker getShaderErrorHandler() const64*c8dee2aaSAndroid Build Coastguard WorkerGrContextOptions::ShaderErrorHandler* GrBaseContextPriv::getShaderErrorHandler() const { 65*c8dee2aaSAndroid Build Coastguard Worker const GrContextOptions& options(this->options()); 66*c8dee2aaSAndroid Build Coastguard Worker return options.fShaderErrorHandler ? options.fShaderErrorHandler 67*c8dee2aaSAndroid Build Coastguard Worker : skgpu::DefaultShaderErrorHandler(); 68*c8dee2aaSAndroid Build Coastguard Worker } 69