diff options
Diffstat (limited to 'gfx/skia/skia/include/gpu/GrTexture.h')
-rw-r--r-- | gfx/skia/skia/include/gpu/GrTexture.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/gfx/skia/skia/include/gpu/GrTexture.h b/gfx/skia/skia/include/gpu/GrTexture.h new file mode 100644 index 000000000..211f1937d --- /dev/null +++ b/gfx/skia/skia/include/gpu/GrTexture.h @@ -0,0 +1,74 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrTexture_DEFINED +#define GrTexture_DEFINED + +#include "GrSurface.h" +#include "SkPoint.h" +#include "SkRefCnt.h" + +class GrTextureParams; +class GrTexturePriv; + +class GrTexture : virtual public GrSurface { +public: + GrTexture* asTexture() override { return this; } + const GrTexture* asTexture() const override { return this; } + GrSLType samplerType() const { return fSamplerType; } + + /** + * Return the native ID or handle to the texture, depending on the + * platform. e.g. on OpenGL, return the texture ID. + */ + virtual GrBackendObject getTextureHandle() const = 0; + + /** + * This function indicates that the texture parameters (wrap mode, filtering, ...) have been + * changed externally to Skia. + */ + virtual void textureParamsModified() = 0; + +#ifdef SK_DEBUG + void validate() const { + this->INHERITED::validate(); + this->validateDesc(); + } +#endif + + /** Access methods that are only to be used within Skia code. */ + inline GrTexturePriv texturePriv(); + inline const GrTexturePriv texturePriv() const; + +protected: + GrTexture(GrGpu*, const GrSurfaceDesc&, GrSLType, bool wasMipMapDataProvided); + + void validateDesc() const; + +private: + void computeScratchKey(GrScratchKey*) const override; + size_t onGpuMemorySize() const override; + void dirtyMipMaps(bool mipMapsDirty); + + enum MipMapsStatus { + kNotAllocated_MipMapsStatus, + kAllocated_MipMapsStatus, + kValid_MipMapsStatus + }; + + GrSLType fSamplerType; + MipMapsStatus fMipMapsStatus; + int fMaxMipMapLevel; + SkSourceGammaTreatment fGammaTreatment; + + friend class GrTexturePriv; + + typedef GrSurface INHERITED; +}; + +#endif |