Index: src/gpu/gl/GrGpuGL.cpp |
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp |
index 2f218a0c86e543f42f5393cc629709fb7fa3aa24..784432ca4a48bd28dd0abda7a521b57196436861 100644 |
--- a/src/gpu/gl/GrGpuGL.cpp |
+++ b/src/gpu/gl/GrGpuGL.cpp |
@@ -426,6 +426,7 @@ GrTexture* GrGpuGL::onWrapBackendTexture(const GrBackendTextureDesc& desc) { |
glRTDesc.fConfig = desc.fConfig; |
glRTDesc.fSampleCnt = desc.fSampleCnt; |
glRTDesc.fOrigin = glTexDesc.fOrigin; |
+ glRTDesc.fCheckAllocation = false; |
if (!this->createRenderTargetObjects(glTexDesc.fWidth, |
glTexDesc.fHeight, |
glTexDesc.fTextureID, |
@@ -451,6 +452,7 @@ GrRenderTarget* GrGpuGL::onWrapBackendRenderTarget(const GrBackendRenderTargetDe |
glDesc.fTexFBOID = GrGLRenderTarget::kUnresolvableFBOID; |
glDesc.fSampleCnt = desc.fSampleCnt; |
glDesc.fIsWrapped = true; |
+ glDesc.fCheckAllocation = false; |
glDesc.fOrigin = resolve_origin(desc.fOrigin, true); |
GrGLIRect viewport; |
@@ -535,6 +537,15 @@ bool adjust_pixel_ops_params(int surfaceWidth, |
*height = subRect.height(); |
return true; |
} |
+ |
+GrGLenum checkAllocError(const GrTextureDesc& desc, const GrGLInterface* interface) { |
bsalomon
2013/06/10 13:21:47
could you namespace {} and_rename_this_to_this_sty
Stephen White
2013/06/10 13:53:14
It already is.
|
+ if (0 != (desc.fFlags & kCheckAllocation_GrTextureFlagBit)) { |
+ return GR_GL_GET_ERROR(interface); |
+ } else { |
+ return CHECK_ALLOC_ERROR(interface); |
+ } |
+} |
+ |
} |
bool GrGpuGL::uploadTexData(const GrGLTexture::Desc& desc, |
@@ -670,7 +681,7 @@ bool GrGpuGL::uploadTexData(const GrGLTexture::Desc& desc, |
data)); |
} |
} |
- GrGLenum error = CHECK_ALLOC_ERROR(this->glInterface()); |
+ GrGLenum error = checkAllocError(desc, this->glInterface()); |
if (error != GR_GL_NO_ERROR) { |
succeeded = false; |
} else { |
@@ -798,7 +809,7 @@ bool GrGpuGL::createRenderTargetObjects(int width, int height, |
GR_GL_COLOR_ATTACHMENT0, |
GR_GL_RENDERBUFFER, |
desc->fMSColorRenderbufferID)); |
- if (!this->glCaps().isConfigVerifiedColorAttachment(desc->fConfig)) { |
+ if (desc->fCheckAllocation || !this->glCaps().isConfigVerifiedColorAttachment(desc->fConfig)) { |
bsalomon
2013/06/10 13:21:47
can you wrap this if and the next one?
Stephen White
2013/06/10 13:53:14
Done.
|
GL_CALL_RET(status, CheckFramebufferStatus(GR_GL_FRAMEBUFFER)); |
if (status != GR_GL_FRAMEBUFFER_COMPLETE) { |
goto FAILED; |
@@ -819,7 +830,7 @@ bool GrGpuGL::createRenderTargetObjects(int width, int height, |
GR_GL_TEXTURE_2D, |
texID, 0)); |
} |
- if (!this->glCaps().isConfigVerifiedColorAttachment(desc->fConfig)) { |
+ if (desc->fCheckAllocation || !this->glCaps().isConfigVerifiedColorAttachment(desc->fConfig)) { |
GL_CALL_RET(status, CheckFramebufferStatus(GR_GL_FRAMEBUFFER)); |
if (status != GR_GL_FRAMEBUFFER_COMPLETE) { |
goto FAILED; |
@@ -882,6 +893,7 @@ GrTexture* GrGpuGL::onCreateTexture(const GrTextureDesc& desc, |
glRTDesc.fTexFBOID = 0; |
glRTDesc.fIsWrapped = false; |
glRTDesc.fConfig = glTexDesc.fConfig; |
+ glRTDesc.fCheckAllocation = 0 != (desc.fFlags & kCheckAllocation_GrTextureFlagBit); |
bsalomon
2013/06/10 13:21:47
SkToBool(desc.fFlags & ...)
Stephen White
2013/06/10 13:53:14
Done. Want me to do the line below? :)
bsalomon
2013/06/10 14:04:42
Yes, please! Much of the GPU code doesn't use SkTo
Stephen White
2013/06/10 14:54:39
Done (here and two other places in this file).
|
bool renderTarget = 0 != (desc.fFlags & kRenderTarget_GrTextureFlagBit); |
@@ -1039,7 +1051,7 @@ bool GrGpuGL::createStencilBufferForRenderTarget(GrRenderTarget* rt, |
sFmt.fInternalFormat, |
width, height)); |
created = |
- (GR_GL_NO_ERROR == CHECK_ALLOC_ERROR(this->glInterface())); |
+ (GR_GL_NO_ERROR == checkAllocError(rt->desc(), this->glInterface())); |
} |
if (created) { |
// After sized formats we attempt an unsized format and take |