xref: /aosp_15_r20/external/skia/src/gpu/ganesh/GrContext_Base.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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 Worker GrContext_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 Worker GrContext_Base::~GrContext_Base() { }
27*c8dee2aaSAndroid Build Coastguard Worker 
init()28*c8dee2aaSAndroid Build Coastguard Worker bool 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 Worker uint32_t GrContext_Base::contextID() const { return fThreadSafeProxy->priv().contextID(); }
backend() const35*c8dee2aaSAndroid Build Coastguard Worker GrBackendApi GrContext_Base::backend() const { return fThreadSafeProxy->priv().backend(); }
36*c8dee2aaSAndroid Build Coastguard Worker 
options() const37*c8dee2aaSAndroid Build Coastguard Worker const 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 Worker const GrCaps* GrContext_Base::caps() const { return fThreadSafeProxy->priv().caps(); }
refCaps() const42*c8dee2aaSAndroid Build Coastguard Worker sk_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 Worker GrBackendFormat 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 Worker GrBackendFormat 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 Worker int 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 Worker sk_sp<GrContextThreadSafeProxy> GrContext_Base::threadSafeProxy() { return fThreadSafeProxy; }
58*c8dee2aaSAndroid Build Coastguard Worker 
59*c8dee2aaSAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////////////////////
refCaps() const60*c8dee2aaSAndroid Build Coastguard Worker sk_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 Worker GrContextOptions::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