diff options
author | Android Chromium Automerger <chromium-automerger@android> | 2014-05-03 01:05:52 +0000 |
---|---|---|
committer | Android Chromium Automerger <chromium-automerger@android> | 2014-05-03 01:05:52 +0000 |
commit | 27369891df5b567113ad1f28e5044a9b414a810b (patch) | |
tree | 7202f6e46ce7303e559bddc6c58d7de7cec8f0c6 | |
parent | 1f7661672c2f8283c4716e82b4f2f4ba07325b51 (diff) | |
parent | a92579d00463a0002a20a49af68da8260d73600f (diff) | |
download | include-27369891df5b567113ad1f28e5044a9b414a810b.tar.gz |
Merge third_party/skia/include from https://chromium.googlesource.com/external/skia/include.git at a92579d00463a0002a20a49af68da8260d73600f
This commit was generated by merge_from_chromium.py.
Change-Id: I6cff178d506857fa1ceb71f51f63e0771ebb9384
-rw-r--r-- | core/SkShader.h | 3 | ||||
-rw-r--r-- | core/SkTLazy.h | 5 | ||||
-rw-r--r-- | core/SkUtils.h | 12 | ||||
-rw-r--r-- | gpu/GrCacheable.h | 55 | ||||
-rw-r--r-- | gpu/GrContext.h | 5 | ||||
-rw-r--r-- | gpu/GrGpuObject.h (renamed from gpu/GrResource.h) | 75 | ||||
-rw-r--r-- | gpu/GrRenderTarget.h | 2 | ||||
-rw-r--r-- | gpu/GrSurface.h | 6 | ||||
-rw-r--r-- | gpu/GrTexture.h | 2 |
9 files changed, 103 insertions, 62 deletions
diff --git a/core/SkShader.h b/core/SkShader.h index 32707d7..bcb229d 100644 --- a/core/SkShader.h +++ b/core/SkShader.h @@ -402,7 +402,8 @@ public: * @param tmy The tiling mode to use when sampling the bitmap in the y-direction. * @return Returns a new shader object. Note: this function never returns null. */ - static SkShader* CreatePictureShader(SkPicture* src, TileMode tmx, TileMode tmy); + static SkShader* CreatePictureShader(SkPicture* src, TileMode tmx, TileMode tmy, + const SkMatrix* localMatrix = NULL); SK_TO_STRING_VIRT() SK_DEFINE_FLATTENABLE_TYPE(SkShader) diff --git a/core/SkTLazy.h b/core/SkTLazy.h index a291e22..518beec 100644 --- a/core/SkTLazy.h +++ b/core/SkTLazy.h @@ -66,6 +66,11 @@ public: * contents. */ T* set(const T& src) { + // Diagnoistic. May remove later. See crbug.com/364224 + if (NULL == &src) { + sk_throw(); + } + if (this->isValid()) { *fPtr = src; } else { diff --git a/core/SkUtils.h b/core/SkUtils.h index d6bf8dd..996a82e 100644 --- a/core/SkUtils.h +++ b/core/SkUtils.h @@ -17,7 +17,7 @@ @param value The 16bit value to be copied into buffer @param count The number of times value should be copied into the buffer. */ -void sk_memset16_portable(uint16_t dst[], uint16_t value, int count); +void sk_memset16(uint16_t dst[], uint16_t value, int count); typedef void (*SkMemset16Proc)(uint16_t dst[], uint16_t value, int count); SkMemset16Proc SkMemset16GetPlatformProc(); @@ -26,18 +26,10 @@ SkMemset16Proc SkMemset16GetPlatformProc(); @param value The 32bit value to be copied into buffer @param count The number of times value should be copied into the buffer. */ -void sk_memset32_portable(uint32_t dst[], uint32_t value, int count); +void sk_memset32(uint32_t dst[], uint32_t value, int count); typedef void (*SkMemset32Proc)(uint32_t dst[], uint32_t value, int count); SkMemset32Proc SkMemset32GetPlatformProc(); -#ifndef sk_memset16 -extern SkMemset16Proc sk_memset16; -#endif - -#ifndef sk_memset32 -extern SkMemset32Proc sk_memset32; -#endif - /////////////////////////////////////////////////////////////////////////////// #define kMaxBytesInUTF8Sequence 4 diff --git a/gpu/GrCacheable.h b/gpu/GrCacheable.h new file mode 100644 index 0000000..75dec16 --- /dev/null +++ b/gpu/GrCacheable.h @@ -0,0 +1,55 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrCacheable_DEFINED +#define GrCacheable_DEFINED + +#include "SkRefCnt.h" + +class GrResourceCacheEntry; + +/** + * Base class for objects that can be kept in the GrResourceCache. + */ +class GrCacheable : public SkRefCnt { +public: + SK_DECLARE_INST_COUNT(GrCacheable) + + /** + * Retrieves the amount of GPU memory used by this resource in bytes. It is + * approximate since we aren't aware of additional padding or copies made + * by the driver. + * + * @return the amount of GPU memory used in bytes + */ + virtual size_t gpuMemorySize() const = 0; + + /** + * Checks whether the GPU memory allocated to this resource is still in effect. + * It can become invalid if its context is destroyed or lost, in which case it + * should no longer count against the GrResourceCache budget. + * + * @return true if this resource is still holding GPU memory + * false otherwise. + */ + virtual bool isValidOnGpu() const = 0; + + void setCacheEntry(GrResourceCacheEntry* cacheEntry) { fCacheEntry = cacheEntry; } + GrResourceCacheEntry* getCacheEntry() { return fCacheEntry; } + +protected: + GrCacheable() : fCacheEntry(NULL) {} + + bool isInCache() const { return NULL != fCacheEntry; } + +private: + GrResourceCacheEntry* fCacheEntry; // NULL if not in cache + + typedef SkRefCnt INHERITED; +}; + +#endif diff --git a/gpu/GrContext.h b/gpu/GrContext.h index c88f469..4d0a94e 100644 --- a/gpu/GrContext.h +++ b/gpu/GrContext.h @@ -20,6 +20,7 @@ class GrAARectRenderer; class GrAutoScratchTexture; +class GrCacheable; class GrDrawState; class GrDrawTarget; class GrEffect; @@ -87,8 +88,8 @@ public: * buffer, etc. references/IDs are now invalid. Should be called even when * GrContext is no longer going to be used for two reasons: * 1) ~GrContext will not try to free the objects in the 3D API. - * 2) If you've created GrResources that outlive the GrContext they will - * be marked as invalid (GrResource::isValid()) and won't attempt to + * 2) If you've created GrGpuObjects that outlive the GrContext they will + * be marked as invalid (GrGpuObjects::isValid()) and won't attempt to * free their underlying resource in the 3D API. * Content drawn since the last GrContext::flush() may be lost. */ diff --git a/gpu/GrResource.h b/gpu/GrGpuObject.h index 93dec58..72d2f89 100644 --- a/gpu/GrResource.h +++ b/gpu/GrGpuObject.h @@ -5,26 +5,25 @@ * found in the LICENSE file. */ -#ifndef GrResource_DEFINED -#define GrResource_DEFINED +#ifndef GrGpuObject_DEFINED +#define GrGpuObject_DEFINED -#include "SkRefCnt.h" +#include "GrCacheable.h" #include "SkTInternalLList.h" class GrGpu; class GrContext; -class GrResourceEntry; /** - * Base class for the GPU resources created by a GrContext. + * Base class for the GPU objects created by a GrContext. */ -class GrResource : public SkRefCnt { +class GrGpuObject : public GrCacheable { public: - SK_DECLARE_INST_COUNT(GrResource) + SK_DECLARE_INST_COUNT(GrGpuObject) /** - * Frees the resource in the underlying 3D API. It must be safe to call this - * when the resource has been previously abandoned. + * Frees the object in the underlying 3D API. It must be safe to call this + * when the object has been previously abandoned. */ void release(); @@ -35,37 +34,26 @@ public: void abandon(); /** - * Tests whether a resource has been abandoned or released. All resources - * will be in this state after their creating GrContext is destroyed or has - * contextLost called. It's up to the client to test isValid() before - * attempting to use a resource if it holds refs on resources across + * Tests whether a object has been abandoned or released. All objects will + * be in this state after their creating GrContext is destroyed or has + * contextLost called. It's up to the client to test wasDestroyed() before + * attempting to use an object if it holds refs on objects across * ~GrContext, freeResources with the force flag, or contextLost. * - * @return true if the resource has been released or abandoned, + * @return true if the object has been released or abandoned, * false otherwise. */ - bool isValid() const { return NULL != fGpu; } + bool wasDestroyed() const { return NULL == fGpu; } /** - * Retrieves the size of the object in GPU memory. This is approximate since - * we aren't aware of additional padding or copies made by the driver. - * - * @return the size of the buffer in bytes - */ - virtual size_t sizeInBytes() const = 0; - - /** - * Retrieves the context that owns the resource. Note that it is possible - * for this to return NULL. When resources have been release()ed or - * abandon()ed they no longer have an owning context. Destroying a - * GrContext automatically releases all its resources. + * Retrieves the context that owns the object. Note that it is possible for + * this to return NULL. When objects have been release()ed or abandon()ed + * they no longer have an owning context. Destroying a GrContext + * automatically releases all its resources. */ const GrContext* getContext() const; GrContext* getContext(); - void setCacheEntry(GrResourceEntry* cacheEntry) { fCacheEntry = cacheEntry; } - GrResourceEntry* getCacheEntry() { return fCacheEntry; } - void incDeferredRefCount() const { SkASSERT(fDeferredRefCount >= 0); ++fDeferredRefCount; @@ -84,14 +72,16 @@ public: void setNeedsDeferredUnref() { fFlags |= kDeferredUnref_FlagBit; } + virtual bool isValidOnGpu() const SK_OVERRIDE { return !this->wasDestroyed(); } + protected: /** - * isWrapped indicates we have wrapped a client-created backend resource in a GrResource. If it - * is true then the client is responsible for the lifetime of the underlying backend resource. - * Otherwise, our onRelease() should free the resource. + * isWrapped indicates we have wrapped a client-created backend object in a GrGpuObject. If it + * is true then the client is responsible for the lifetime of the underlying backend object. + * Otherwise, our onRelease() should free the object. */ - GrResource(GrGpu* gpu, bool isWrapped); - virtual ~GrResource(); + GrGpuObject(GrGpu* gpu, bool isWrapped); + virtual ~GrGpuObject(); GrGpu* getGpu() const { return fGpu; } @@ -100,7 +90,6 @@ protected: virtual void onRelease() {}; virtual void onAbandon() {}; - bool isInCache() const { return NULL != fCacheEntry; } bool isWrapped() const { return kWrapped_FlagBit & fFlags; } bool needsDeferredUnref() const { return SkToBool(kDeferredUnref_FlagBit & fFlags); } @@ -110,18 +99,16 @@ private: #endif // We're in an internal doubly linked list - SK_DECLARE_INTERNAL_LLIST_INTERFACE(GrResource); + SK_DECLARE_INTERNAL_LLIST_INTERFACE(GrGpuObject); GrGpu* fGpu; // not reffed. The GrGpu can be deleted while there - // are still live GrResources. It will call - // release() on all such resources in its - // destructor. - GrResourceEntry* fCacheEntry; // NULL if not in cache + // are still live GrGpuObjects. It will call + // release() on all such objects in its destructor. mutable int fDeferredRefCount; // How many references in deferred drawing buffers. enum Flags { /** - * This resource wraps a GPU resource given to us by the user. + * This object wraps a GPU object given to us by the user. * Lifetime management is left up to the user (i.e., we will not * free it). */ @@ -129,7 +116,7 @@ private: /** * This texture should be de-refed when the deferred ref count goes - * to zero. A resource gets into this state when the resource cache + * to zero. An object gets into this state when the resource cache * is holding a ref-of-obligation (i.e., someone needs to own it but * no one else wants to) but doesn't really want to keep it around. */ @@ -137,7 +124,7 @@ private: }; uint32_t fFlags; - typedef SkRefCnt INHERITED; + typedef GrCacheable INHERITED; }; #endif diff --git a/gpu/GrRenderTarget.h b/gpu/GrRenderTarget.h index ac3cbee..6a3f26f 100644 --- a/gpu/GrRenderTarget.h +++ b/gpu/GrRenderTarget.h @@ -26,7 +26,7 @@ public: SK_DECLARE_INST_COUNT(GrRenderTarget) // GrResource overrides - virtual size_t sizeInBytes() const SK_OVERRIDE; + virtual size_t gpuMemorySize() const SK_OVERRIDE; // GrSurface overrides /** diff --git a/gpu/GrSurface.h b/gpu/GrSurface.h index 15e44ab..f741c77 100644 --- a/gpu/GrSurface.h +++ b/gpu/GrSurface.h @@ -10,14 +10,14 @@ #define GrSurface_DEFINED #include "GrTypes.h" -#include "GrResource.h" +#include "GrGpuObject.h" #include "SkRect.h" class GrTexture; class GrRenderTarget; struct SkImageInfo; -class GrSurface : public GrResource { +class GrSurface : public GrGpuObject { public: SK_DECLARE_INST_COUNT(GrSurface); @@ -144,7 +144,7 @@ protected: GrTextureDesc fDesc; private: - typedef GrResource INHERITED; + typedef GrGpuObject INHERITED; }; #endif // GrSurface_DEFINED diff --git a/gpu/GrTexture.h b/gpu/GrTexture.h index 1df9dc6..1b9f7b7 100644 --- a/gpu/GrTexture.h +++ b/gpu/GrTexture.h @@ -55,7 +55,7 @@ public: /** * Approximate number of bytes used by the texture */ - virtual size_t sizeInBytes() const SK_OVERRIDE { + virtual size_t gpuMemorySize() const SK_OVERRIDE { return (size_t) fDesc.fWidth * fDesc.fHeight * GrBytesPerPixel(fDesc.fConfig); |