ec9b4aab87
https://clang.llvm.org/extra/clang-tidy/checks/readability-const-return-type.html `const` on a non-pointer/reference return type typically doesn't add value and can have negative side effects. (i.e., returning a `const std::string` isn't meaningfully different from returning a `std::string`, but can sometimes inhibit move-related optimizations.) In Skia's case, the priv() functions are a notable exception where const return types are intentional and valuable. These calls have been marked with NOLINT to exclude them from the check. This check does not affect pointer and reference returns, where constness is important. Change-Id: I86cab92332f164e5ab710b4127182eec99831d7d Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308564 Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
93 lines
2.8 KiB
C++
93 lines
2.8 KiB
C++
/*
|
|
* Copyright 2019 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef GrContext_Base_DEFINED
|
|
#define GrContext_Base_DEFINED
|
|
|
|
#include "include/core/SkRefCnt.h"
|
|
#include "include/gpu/GrBackendSurface.h"
|
|
#include "include/gpu/GrContextOptions.h"
|
|
#include "include/gpu/GrTypes.h"
|
|
|
|
class GrBaseContextPriv;
|
|
class GrCaps;
|
|
class GrContextThreadSafeProxy;
|
|
class GrDirectContext;
|
|
class GrImageContext;
|
|
class GrRecordingContext;
|
|
|
|
class GrContext_Base : public SkRefCnt {
|
|
public:
|
|
~GrContext_Base() override;
|
|
|
|
/*
|
|
* Safely downcast to a GrDirectContext.
|
|
*/
|
|
virtual GrDirectContext* asDirectContext() { return nullptr; }
|
|
|
|
/*
|
|
* The 3D API backing this context
|
|
*/
|
|
SK_API GrBackendApi backend() const;
|
|
|
|
/*
|
|
* Retrieve the default GrBackendFormat for a given SkColorType and renderability.
|
|
* It is guaranteed that this backend format will be the one used by the GrContext
|
|
* SkColorType and SkSurfaceCharacterization-based createBackendTexture methods.
|
|
*
|
|
* The caller should check that the returned format is valid.
|
|
*/
|
|
SK_API GrBackendFormat defaultBackendFormat(SkColorType, GrRenderable) const;
|
|
|
|
SK_API GrBackendFormat compressedBackendFormat(SkImage::CompressionType) const;
|
|
|
|
// TODO: When the public version is gone, rename to refThreadSafeProxy and add raw ptr ver.
|
|
sk_sp<GrContextThreadSafeProxy> threadSafeProxy();
|
|
|
|
// Provides access to functions that aren't part of the public API.
|
|
GrBaseContextPriv priv();
|
|
const GrBaseContextPriv priv() const; // NOLINT(readability-const-return-type)
|
|
|
|
protected:
|
|
friend class GrBaseContextPriv; // for hidden functions
|
|
|
|
GrContext_Base(sk_sp<GrContextThreadSafeProxy>);
|
|
|
|
virtual bool init();
|
|
|
|
/**
|
|
* An identifier for this context. The id is used by all compatible contexts. For example,
|
|
* if SkImages are created on one thread using an image creation context, then fed into a
|
|
* DDL Recorder on second thread (which has a recording context) and finally replayed on
|
|
* a third thread with a direct context, then all three contexts will report the same id.
|
|
* It is an error for an image to be used with contexts that report different ids.
|
|
*/
|
|
uint32_t contextID() const;
|
|
|
|
bool matches(GrContext_Base* candidate) const {
|
|
return candidate && candidate->contextID() == this->contextID();
|
|
}
|
|
|
|
/*
|
|
* The options in effect for this context
|
|
*/
|
|
const GrContextOptions& options() const;
|
|
|
|
const GrCaps* caps() const;
|
|
sk_sp<const GrCaps> refCaps() const;
|
|
|
|
virtual GrImageContext* asImageContext() { return nullptr; }
|
|
virtual GrRecordingContext* asRecordingContext() { return nullptr; }
|
|
|
|
sk_sp<GrContextThreadSafeProxy> fThreadSafeProxy;
|
|
|
|
private:
|
|
typedef SkRefCnt INHERITED;
|
|
};
|
|
|
|
#endif
|