1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2019 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "include/private/GrContext_Base.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "src/gpu/GrBaseContextPriv.h" 11cb93a386Sopenharmony_ci#include "src/gpu/GrCaps.h" 12cb93a386Sopenharmony_ci#include "src/gpu/GrContextThreadSafeProxyPriv.h" 13cb93a386Sopenharmony_ci#include "src/gpu/GrShaderUtils.h" 14cb93a386Sopenharmony_ci#include "src/gpu/effects/GrSkSLFP.h" 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ciGrContext_Base::GrContext_Base(sk_sp<GrContextThreadSafeProxy> proxy) 17cb93a386Sopenharmony_ci : fThreadSafeProxy(std::move(proxy)) { 18cb93a386Sopenharmony_ci} 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ciGrContext_Base::~GrContext_Base() { } 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_cibool GrContext_Base::init() { 23cb93a386Sopenharmony_ci SkASSERT(fThreadSafeProxy->isValid()); 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ci return true; 26cb93a386Sopenharmony_ci} 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ciuint32_t GrContext_Base::contextID() const { return fThreadSafeProxy->priv().contextID(); } 29cb93a386Sopenharmony_ciGrBackendApi GrContext_Base::backend() const { return fThreadSafeProxy->priv().backend(); } 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ciconst GrContextOptions& GrContext_Base::options() const { 32cb93a386Sopenharmony_ci return fThreadSafeProxy->priv().options(); 33cb93a386Sopenharmony_ci} 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ciconst GrCaps* GrContext_Base::caps() const { return fThreadSafeProxy->priv().caps(); } 36cb93a386Sopenharmony_cisk_sp<const GrCaps> GrContext_Base::refCaps() const { return fThreadSafeProxy->priv().refCaps(); } 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ciGrBackendFormat GrContext_Base::defaultBackendFormat(SkColorType skColorType, 39cb93a386Sopenharmony_ci GrRenderable renderable) const { 40cb93a386Sopenharmony_ci return fThreadSafeProxy->defaultBackendFormat(skColorType, renderable); 41cb93a386Sopenharmony_ci} 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ciGrBackendFormat GrContext_Base::compressedBackendFormat(SkImage::CompressionType c) const { 44cb93a386Sopenharmony_ci return fThreadSafeProxy->compressedBackendFormat(c); 45cb93a386Sopenharmony_ci} 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_cisk_sp<GrContextThreadSafeProxy> GrContext_Base::threadSafeProxy() { return fThreadSafeProxy; } 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci/////////////////////////////////////////////////////////////////////////////////////////////////// 50cb93a386Sopenharmony_cisk_sp<const GrCaps> GrBaseContextPriv::refCaps() const { 51cb93a386Sopenharmony_ci return this->context()->refCaps(); 52cb93a386Sopenharmony_ci} 53cb93a386Sopenharmony_ci 54cb93a386Sopenharmony_ciconst std::string& GrContext_Base::getProcessName() const 55cb93a386Sopenharmony_ci{ 56cb93a386Sopenharmony_ci return options().fProcessName; 57cb93a386Sopenharmony_ci} 58cb93a386Sopenharmony_ci 59cb93a386Sopenharmony_ciGrContextOptions::ShaderErrorHandler* GrBaseContextPriv::getShaderErrorHandler() const { 60cb93a386Sopenharmony_ci const GrContextOptions& options(this->options()); 61cb93a386Sopenharmony_ci return options.fShaderErrorHandler ? options.fShaderErrorHandler 62cb93a386Sopenharmony_ci : GrShaderUtils::DefaultShaderErrorHandler(); 63cb93a386Sopenharmony_ci} 64