1ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */ 8ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 9ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#ifndef GrTexture_DEFINED 10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#define GrTexture_DEFINED 11ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 127d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com#include "GrSurface.h" 1326e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com#include "SkPoint.h" 14686bcb871b8425603b9accbf72e27a9309f786d8bsalomon@google.com#include "GrRenderTarget.h" 15ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 16a1e5795279bd085496fa04c59e588f440bf30457robertphillips@google.comclass GrResourceKey; 17b8670998a59d305cd22a3c0cbdc6e075b0a37a6ebsalomon@google.comclass GrTextureParams; 18e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.orgclass GrTextureImpl; 19ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 207d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.comclass GrTexture : public GrSurface { 21ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.compublic: 2215c0fea699b25343fe6f49668a5632866e1a0306robertphillips@google.com /** 23c6cf72381b212eb21e61d5c5e14247b483a77753bsalomon@google.com * Approximate number of bytes used by the texture 24ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */ 2511c6b39cfa24f812ceb115589f51a60a56ef14fecommit-bot@chromium.org virtual size_t gpuMemorySize() const SK_OVERRIDE; 26ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 270342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com // GrSurface overrides 287d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com virtual bool readPixels(int left, int top, int width, int height, 290342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com GrPixelConfig config, 300342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com void* buffer, 310342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com size_t rowBytes = 0, 320342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com uint32_t pixelOpsFlags = 0) SK_OVERRIDE; 336f3795105b2b458079e53a721c1735c9518f6bb5bsalomon@google.com 347d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com virtual void writePixels(int left, int top, int width, int height, 350342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com GrPixelConfig config, 360342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com const void* buffer, 370342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com size_t rowBytes = 0, 380342a85091fd430c90a142d155dc9642aa729d9ebsalomon@google.com uint32_t pixelOpsFlags = 0) SK_OVERRIDE; 397d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com 407d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com virtual GrTexture* asTexture() SK_OVERRIDE { return this; } 417d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com virtual const GrTexture* asTexture() const SK_OVERRIDE { return this; } 42e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org virtual GrRenderTarget* asRenderTarget() SK_OVERRIDE { return fRenderTarget.get(); } 43e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org virtual const GrRenderTarget* asRenderTarget() const SK_OVERRIDE { return fRenderTarget.get(); } 44669fdc4ed8ed461a141cb97d0afdd9ef72a82be1bsalomon@google.com 45669fdc4ed8ed461a141cb97d0afdd9ef72a82be1bsalomon@google.com /** 46e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * Convert from texels to normalized texture coords for POT textures only. Please don't add 47e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * new callsites for these functions. They are slated for removal. 487d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com */ 49972f9cd7a063d0544f8c919fd12b9a3adbd12b24commit-bot@chromium.org SkFixed normalizeFixedX(SkFixed x) const { 50f9dae780c2c46a1f08adbbe8de2faaba091254d4tfarina SkASSERT(SkIsPow2(fDesc.fWidth)); 51fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com return x >> fShiftFixedX; 527d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com } 53972f9cd7a063d0544f8c919fd12b9a3adbd12b24commit-bot@chromium.org SkFixed normalizeFixedY(SkFixed y) const { 54f9dae780c2c46a1f08adbbe8de2faaba091254d4tfarina SkASSERT(SkIsPow2(fDesc.fHeight)); 55fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com return y >> fShiftFixedY; 567d501ab502e861f2b2367b10a701b8449241558erobertphillips@google.com } 57ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 58ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com /** 59ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com * Return the native ID or handle to the texture, depending on the 6008afc843c074429a9848d8d165e6b898e3e7d371bsalomon@google.com * platform. e.g. on OpenGL, return the texture ID. 61ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */ 6208afc843c074429a9848d8d165e6b898e3e7d371bsalomon@google.com virtual GrBackendObject getTextureHandle() const = 0; 63ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 6459e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org /** 65e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * This function indicates that the texture parameters (wrap mode, filtering, ...) have been 66e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * changed externally to Skia. 6759e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org */ 68e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org virtual void textureParamsModified() = 0; 69e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org SK_ATTR_DEPRECATED("Renamed to textureParamsModified.") 70e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org void invalidateCachedState() { this->textureParamsModified(); } 71e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 72e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org /** 73e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * Informational texture flags. This will be moved to the private GrTextureImpl class soon. 74e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org */ 75e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org enum FlagBits { 76e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org kFirstBit = (kLastPublic_GrTextureFlagBit << 1), 77e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 78e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org /** 79e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * This texture should be returned to the texture cache when 80e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org * it is no longer reffed 81e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org */ 82e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org kReturnToCache_FlagBit = kFirstBit, 83e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org }; 84e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 85e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org void resetFlag(GrTextureFlags flags) { 86e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org fDesc.fFlags = fDesc.fFlags & ~flags; 87e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 8859e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org 89515dcd36032997ce335daa0163c6d67e851bcad1commit-bot@chromium.org#ifdef SK_DEBUG 90ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com void validate() const { 91ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com this->INHERITED::validate(); 9232716283420df90644c8b8114308f7967aa91d9frobertphillips@google.com 9332716283420df90644c8b8114308f7967aa91d9frobertphillips@google.com this->validateDesc(); 94ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com } 95ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#endif 9603087072483378a43f7b3f7a47944614187275ebrobertphillips@google.com 97e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org GrTextureImpl* impl() { return reinterpret_cast<GrTextureImpl*>(this); } 98e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org const GrTextureImpl* impl() const { return reinterpret_cast<const GrTextureImpl*>(this); } 99a1e5795279bd085496fa04c59e588f440bf30457robertphillips@google.com 1006dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.comprotected: 101686bcb871b8425603b9accbf72e27a9309f786d8bsalomon@google.com // A texture refs its rt representation but not vice-versa. It is up to 102686bcb871b8425603b9accbf72e27a9309f786d8bsalomon@google.com // the subclass constructor to initialize this pointer. 103686bcb871b8425603b9accbf72e27a9309f786d8bsalomon@google.com SkAutoTUnref<GrRenderTarget> fRenderTarget; 1046dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.com 1053cb406bb88f5aa09cf9f5a9554b4b1314cf1a2eesenorblanco@chromium.org GrTexture(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc) 1063cb406bb88f5aa09cf9f5a9554b4b1314cf1a2eesenorblanco@chromium.org : INHERITED(gpu, isWrapped, desc) 107e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org , fRenderTarget(NULL) { 1086dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.com // only make sense if alloc size is pow2 109b9086a026844e4cfd08b219e49ce3f12294cba98bsalomon@google.com fShiftFixedX = 31 - SkCLZ(fDesc.fWidth); 110b9086a026844e4cfd08b219e49ce3f12294cba98bsalomon@google.com fShiftFixedY = 31 - SkCLZ(fDesc.fHeight); 1116dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.com } 112e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 113686bcb871b8425603b9accbf72e27a9309f786d8bsalomon@google.com virtual ~GrTexture(); 114cee661af926cc977addc6e039b7022975a448acebsalomon@google.com 1156dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.com // GrResource overrides 11615c0fea699b25343fe6f49668a5632866e1a0306robertphillips@google.com virtual void onRelease() SK_OVERRIDE; 11715c0fea699b25343fe6f49668a5632866e1a0306robertphillips@google.com virtual void onAbandon() SK_OVERRIDE; 1186dcf499d3578eff9ab5aead0d195fc0cb02c796bbsalomon@google.com 11932716283420df90644c8b8114308f7967aa91d9frobertphillips@google.com void validateDesc() const; 12032716283420df90644c8b8114308f7967aa91d9frobertphillips@google.com 1211c13c9668a889e56a0c85b51b9f28139c25b76ffbsalomon@google.comprivate: 122e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org virtual void internal_dispose() const SK_OVERRIDE; 123bd465d141be875278d6bbc06becfdbb4acbbf557commit-bot@chromium.org 12459e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org // these two shift a fixed-point value into normalized coordinates 12559e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org // for this texture if the texture is power of two sized. 12659e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org int fShiftFixedX; 12759e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org int fShiftFixedY; 12859e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org 129e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org typedef GrSurface INHERITED; 130e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org}; 131bd465d141be875278d6bbc06becfdbb4acbbf557commit-bot@chromium.org 132e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.orgclass GrTextureImpl : public GrTexture { 133e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.orgpublic: 134e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org SK_DECLARE_INST_COUNT(GrTextureImpl) 13559e7d238522145e00357c54d71a4216b279faf1ccommit-bot@chromium.org 136e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org void setFlag(GrTextureFlags flags) { 137e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org fDesc.fFlags = fDesc.fFlags | flags; 138e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 139e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org void resetFlag(GrTextureFlags flags) { 140e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org fDesc.fFlags = fDesc.fFlags & ~flags; 141e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 142e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org bool isSetFlag(GrTextureFlags flags) const { 143e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org return 0 != (fDesc.fFlags & flags); 144e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 145e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 146e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org void dirtyMipMaps(bool mipMapsDirty); 147e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 148e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org bool mipMapsAreDirty() const { 149e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org return kValid_MipMapsStatus != fMipMapsStatus; 150e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 151e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 152e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org bool hasMipMaps() const { 153e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org return kNotAllocated_MipMapsStatus != fMipMapsStatus; 154e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 155e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 156e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org static GrResourceKey ComputeKey(const GrGpu* gpu, 157e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org const GrTextureParams* params, 158e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org const GrTextureDesc& desc, 159e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org const GrCacheID& cacheID); 160e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org static GrResourceKey ComputeScratchKey(const GrTextureDesc& desc); 161e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org static bool NeedsResizing(const GrResourceKey& key); 162e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org static bool NeedsBilerp(const GrResourceKey& key); 163e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 164e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.orgprotected: 165e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org GrTextureImpl(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc) 166e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org : INHERITED(gpu, isWrapped, desc) 167e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org , fMipMapsStatus(kNotAllocated_MipMapsStatus) { 168e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org } 169e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 170e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.orgprivate: 171e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org enum MipMapsStatus { 172e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org kNotAllocated_MipMapsStatus, 173e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org kAllocated_MipMapsStatus, 174e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org kValid_MipMapsStatus 175e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org }; 176e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 177e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org MipMapsStatus fMipMapsStatus; 178e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 179e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org typedef GrTexture INHERITED; 180ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}; 181ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 18226e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com/** 18326e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com * Represents a texture that is intended to be accessed in device coords with an offset. 18426e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com */ 18526e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.comclass GrDeviceCoordTexture { 18626e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.compublic: 18726e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrDeviceCoordTexture() { fOffset.set(0, 0); } 18826e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 18926e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrDeviceCoordTexture(const GrDeviceCoordTexture& other) { 19026e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com *this = other; 19126e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com } 19226e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 19326e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrDeviceCoordTexture(GrTexture* texture, const SkIPoint& offset) 19426e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com : fTexture(SkSafeRef(texture)) 19526e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com , fOffset(offset) { 19626e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com } 19726e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 19826e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrDeviceCoordTexture& operator=(const GrDeviceCoordTexture& other) { 19926e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com fTexture.reset(SkSafeRef(other.fTexture.get())); 20026e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com fOffset = other.fOffset; 20126e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com return *this; 20226e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com } 20326e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 20426e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com const SkIPoint& offset() const { return fOffset; } 20526e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 20626e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com void setOffset(const SkIPoint& offset) { fOffset = offset; } 20726e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com void setOffset(int ox, int oy) { fOffset.set(ox, oy); } 20826e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 20926e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrTexture* texture() const { return fTexture.get(); } 21026e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 21126e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com GrTexture* setTexture(GrTexture* texture) { 21226e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com fTexture.reset(SkSafeRef(texture)); 21326e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com return texture; 21426e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com } 215e49157f0838c615b10da0ef2b297c742da662e34commit-bot@chromium.org 21626e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.comprivate: 21726e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com SkAutoTUnref<GrTexture> fTexture; 21826e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com SkIPoint fOffset; 21926e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com}; 22026e18b593ab65e4d92dfbce92579d8bc180d4c2cbsalomon@google.com 221ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#endif 222