summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Chromium Automerger <chromium-automerger@android>2014-05-03 01:05:52 +0000
committerAndroid Chromium Automerger <chromium-automerger@android>2014-05-03 01:05:52 +0000
commit27369891df5b567113ad1f28e5044a9b414a810b (patch)
tree7202f6e46ce7303e559bddc6c58d7de7cec8f0c6
parent1f7661672c2f8283c4716e82b4f2f4ba07325b51 (diff)
parenta92579d00463a0002a20a49af68da8260d73600f (diff)
downloadinclude-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.h3
-rw-r--r--core/SkTLazy.h5
-rw-r--r--core/SkUtils.h12
-rw-r--r--gpu/GrCacheable.h55
-rw-r--r--gpu/GrContext.h5
-rw-r--r--gpu/GrGpuObject.h (renamed from gpu/GrResource.h)75
-rw-r--r--gpu/GrRenderTarget.h2
-rw-r--r--gpu/GrSurface.h6
-rw-r--r--gpu/GrTexture.h2
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);