| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrGLTexture.h" | 8 #include "GrGLTexture.h" |
| 9 #include "GrGpuGL.h" | 9 #include "GrGpuGL.h" |
| 10 | 10 |
| 11 SK_DEFINE_INST_COUNT(GrGLTexID) | 11 SK_DEFINE_INST_COUNT(GrGLTexID) |
| 12 | 12 |
| 13 #define GPUGL static_cast<GrGpuGL*>(getGpu()) | 13 #define GPUGL static_cast<GrGpuGL*>(getGpu()) |
| 14 | 14 |
| 15 #define GL_CALL(X) GR_GL_CALL(GPUGL->glInterface(), X) | 15 #define GL_CALL(X) GR_GL_CALL(GPUGL->glInterface(), X) |
| 16 | 16 |
| 17 void GrGLTexture::init(GrGpuGL* gpu, | 17 void GrGLTexture::init(GrGpuGL* gpu, |
| 18 const Desc& textureDesc, | 18 const Desc& textureDesc, |
| 19 const GrGLRenderTarget::Desc* rtDesc) { | 19 const GrGLRenderTarget::Desc* rtDesc) { |
| 20 | 20 |
| 21 GrAssert(0 != textureDesc.fTextureID); | 21 GrAssert(0 != textureDesc.fTextureID); |
| 22 | 22 |
| 23 fTexParams.invalidate(); | 23 fTexParams.invalidate(); |
| 24 fTexParamsTimestamp = GrGpu::kExpiredTimestamp; | 24 fTexParamsTimestamp = GrGpu::kExpiredTimestamp; |
| 25 fTexIDObj = SkNEW_ARGS(GrGLTexID, | 25 fTexIDObj.reset(SkNEW_ARGS(GrGLTexID, (GPUGL->glInterface(), |
| 26 (GPUGL->glInterface(), | 26 textureDesc.fTextureID, |
| 27 textureDesc.fTextureID, | 27 textureDesc.fIsWrapped))); |
| 28 textureDesc.fIsWrapped)); | |
| 29 | 28 |
| 30 if (NULL != rtDesc) { | 29 if (NULL != rtDesc) { |
| 31 GrGLIRect vp; | 30 GrGLIRect vp; |
| 32 vp.fLeft = 0; | 31 vp.fLeft = 0; |
| 33 vp.fWidth = textureDesc.fWidth; | 32 vp.fWidth = textureDesc.fWidth; |
| 34 vp.fBottom = 0; | 33 vp.fBottom = 0; |
| 35 vp.fHeight = textureDesc.fHeight; | 34 vp.fHeight = textureDesc.fHeight; |
| 36 | 35 |
| 37 fRenderTarget.reset(SkNEW_ARGS(GrGLRenderTarget, (gpu, *rtDesc, vp, fTex
IDObj, this))); | 36 fRenderTarget.reset(SkNEW_ARGS(GrGLRenderTarget, (gpu, *rtDesc, vp, fTex
IDObj, this))); |
| 38 } | 37 } |
| 39 } | 38 } |
| 40 | 39 |
| 41 GrGLTexture::GrGLTexture(GrGpuGL* gpu, | 40 GrGLTexture::GrGLTexture(GrGpuGL* gpu, |
| 42 const Desc& textureDesc) | 41 const Desc& textureDesc) |
| 43 : INHERITED(gpu, textureDesc.fIsWrapped, textureDesc) { | 42 : INHERITED(gpu, textureDesc.fIsWrapped, textureDesc) { |
| 44 this->init(gpu, textureDesc, NULL); | 43 this->init(gpu, textureDesc, NULL); |
| 45 } | 44 } |
| 46 | 45 |
| 47 GrGLTexture::GrGLTexture(GrGpuGL* gpu, | 46 GrGLTexture::GrGLTexture(GrGpuGL* gpu, |
| 48 const Desc& textureDesc, | 47 const Desc& textureDesc, |
| 49 const GrGLRenderTarget::Desc& rtDesc) | 48 const GrGLRenderTarget::Desc& rtDesc) |
| 50 : INHERITED(gpu, textureDesc.fIsWrapped, textureDesc) { | 49 : INHERITED(gpu, textureDesc.fIsWrapped, textureDesc) { |
| 51 this->init(gpu, textureDesc, &rtDesc); | 50 this->init(gpu, textureDesc, &rtDesc); |
| 52 } | 51 } |
| 53 | 52 |
| 54 void GrGLTexture::onRelease() { | 53 void GrGLTexture::onRelease() { |
| 55 GPUGL->notifyTextureDelete(this); | 54 GPUGL->notifyTextureDelete(this); |
| 56 if (NULL != fTexIDObj) { | 55 fTexIDObj.reset(NULL); |
| 57 fTexIDObj->unref(); | |
| 58 fTexIDObj = NULL; | |
| 59 } | |
| 60 | |
| 61 INHERITED::onRelease(); | 56 INHERITED::onRelease(); |
| 62 } | 57 } |
| 63 | 58 |
| 64 void GrGLTexture::onAbandon() { | 59 void GrGLTexture::onAbandon() { |
| 65 if (NULL != fTexIDObj) { | 60 if (NULL != fTexIDObj.get()) { |
| 66 fTexIDObj->abandon(); | 61 fTexIDObj->abandon(); |
| 62 fTexIDObj.reset(NULL); |
| 67 } | 63 } |
| 68 | 64 |
| 69 INHERITED::onAbandon(); | 65 INHERITED::onAbandon(); |
| 70 } | 66 } |
| 71 | 67 |
| 72 GrBackendObject GrGLTexture::getTextureHandle() const { | 68 GrBackendObject GrGLTexture::getTextureHandle() const { |
| 73 return fTexIDObj->id(); | 69 return static_cast<GrBackendObject>(this->textureID()); |
| 74 } | 70 } |
| OLD | NEW |