From d1e4335318c1da24e0fdc024db2b8abea385178d Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Mon, 21 Mar 2011 21:38:40 +0000 Subject: [PATCH] Remove IMG multisample texture support. This never worked correctly. The texture loses multisample status when the resolve occurs. We never had code to re-establish it. Also, we'd have to handle the case where you resolve but then want to render to it again without clearing. Review URL: http://codereview.appspot.com/4274074/ git-svn-id: http://skia.googlecode.com/svn/trunk@974 2bbb7eff-a529-9590-31e7-b0007b416f81 --- gpu/include/GrGLConfig_chrome.h | 1 - gpu/include/GrGLDefines.h | 1 - gpu/include/GrGLInterface.h | 6 ----- gpu/include/GrGLPlatformIncludes.h | 1 - gpu/src/GrGLInterface.cpp | 7 ------ gpu/src/GrGpuGL.cpp | 39 +++++++----------------------- gpu/src/GrGpuGL.h | 3 +-- 7 files changed, 10 insertions(+), 48 deletions(-) diff --git a/gpu/include/GrGLConfig_chrome.h b/gpu/include/GrGLConfig_chrome.h index 06a74d3a38..1b3c1c6b49 100644 --- a/gpu/include/GrGLConfig_chrome.h +++ b/gpu/include/GrGLConfig_chrome.h @@ -6,7 +6,6 @@ // gl2ext.h will define these extensions macros but Chrome doesn't provide // prototypes. #define GL_OES_mapbuffer 0 -#define GL_IMG_multisampled_render_to_texture 0 #define GR_GL_PLATFORM_HEADER #define GR_GL_PLATFORM_HEADER_EXT diff --git a/gpu/include/GrGLDefines.h b/gpu/include/GrGLDefines.h index e2d9106525..46bd264460 100644 --- a/gpu/include/GrGLDefines.h +++ b/gpu/include/GrGLDefines.h @@ -606,7 +606,6 @@ #define GR_GL_DEPTH24_STENCIL8 0x88F0 #define GR_GL_MAX_SAMPLES 0x8D57 -#define GR_GL_MAX_SAMPLES_IMG 0x9135 // to be removed soon. #define GR_GL_RENDERBUFFER_WIDTH 0x8D42 #define GR_GL_RENDERBUFFER_HEIGHT 0x8D43 diff --git a/gpu/include/GrGLInterface.h b/gpu/include/GrGLInterface.h index b43baccf8f..700ce9ee14 100644 --- a/gpu/include/GrGLInterface.h +++ b/gpu/include/GrGLInterface.h @@ -178,9 +178,6 @@ struct GrGLInterface { // apple's es extension typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLResolveMultisampleFramebufferProc)(); - // IMG'e es extension - typedef GrGLvoid (GR_GL_FUNCTION_TYPE *GrGLFramebufferTexture2DMultisampleProc)(GrGLenum target, GrGLenum attachment, GrGLenum textarget, GrGLuint texture, GrGLint level, GrGLsizei samples); - // Buffer mapping (extension in ES). typedef GrGLvoid* (GR_GL_FUNCTION_TYPE *GrGLMapBufferProc)(GrGLenum target, GrGLenum access); typedef GrGLboolean (GR_GL_FUNCTION_TYPE *GrGLUnmapBufferProc)(GrGLenum target); @@ -286,9 +283,6 @@ struct GrGLInterface { // apple's es extension GrGLResolveMultisampleFramebufferProc fResolveMultisampleFramebuffer; - // IMG'e es extension - GrGLFramebufferTexture2DMultisampleProc fFramebufferTexture2DMultisample; - // Buffer mapping (extension in ES). GrGLMapBufferProc fMapBuffer; GrGLUnmapBufferProc fUnmapBuffer; diff --git a/gpu/include/GrGLPlatformIncludes.h b/gpu/include/GrGLPlatformIncludes.h index 65e5281aef..13ce694985 100644 --- a/gpu/include/GrGLPlatformIncludes.h +++ b/gpu/include/GrGLPlatformIncludes.h @@ -123,7 +123,6 @@ // builds. #define GL_APPLE_framebuffer_multisample 1 #define GL_EXT_framebuffer_object 1 - #define GL_IMG_multisampled_render_to_texture 1 #define GL_OES_mapbuffer 1 #define GL_OES_mapbuffer 1 #elif GR_MAC_BUILD diff --git a/gpu/src/GrGLInterface.cpp b/gpu/src/GrGLInterface.cpp index cc2c7bf07d..702b057e3e 100644 --- a/gpu/src/GrGLInterface.cpp +++ b/gpu/src/GrGLInterface.cpp @@ -220,13 +220,6 @@ void InitializeGLInterfaceExtensions(GrGLInterface* glBindings) { } #endif - #if GL_IMG_multisampled_render_to_texture - if (has_gl_extension_from_string( - "GL_IMG_multisampled_render_to_texture", extensionString)) { - GR_GL_GET_PROC_SUFFIX(FramebufferTexture2DMultisample, IMG); - } - #endif - #if GL_OES_mapbuffer if (has_gl_extension_from_string("GL_OES_mapbuffer", extensionString)) { GR_GL_GET_PROC_SUFFIX(MapBuffer, OES); diff --git a/gpu/src/GrGpuGL.cpp b/gpu/src/GrGpuGL.cpp index e944551009..1862784c1e 100644 --- a/gpu/src/GrGpuGL.cpp +++ b/gpu/src/GrGpuGL.cpp @@ -230,13 +230,7 @@ GrGpuGL::GrGpuGL() { memset(fAASamples, 0, sizeof(fAASamples)); fMSFBOType = kNone_MSFBO; - if (has_gl_extension("GL_IMG_multisampled_render_to_texture")) { - fMSFBOType = kIMG_MSFBO; - if (gPrintStartupSpew) { - GrPrintf("MSAA Support: IMG ES EXT.\n"); - } - } - else if (has_gl_extension("GL_APPLE_framebuffer_multisample")) { + if (has_gl_extension("GL_APPLE_framebuffer_multisample")) { fMSFBOType = kApple_MSFBO; if (gPrintStartupSpew) { GrPrintf("MSAA Support: APPLE ES EXT.\n"); @@ -260,10 +254,7 @@ GrGpuGL::GrGpuGL() { if (kNone_MSFBO != fMSFBOType) { GrGLint maxSamples; - GrGLenum maxSampleGetter = (kIMG_MSFBO == fMSFBOType) ? - GR_GL_MAX_SAMPLES_IMG : - GR_GL_MAX_SAMPLES; - GR_GL_GetIntegerv(maxSampleGetter, &maxSamples); + GR_GL_GetIntegerv(GR_GL_MAX_SAMPLES, &maxSamples); if (maxSamples > 1 ) { fAASamples[kNone_AALevel] = 0; fAASamples[kLow_AALevel] = GrMax(2, @@ -830,11 +821,9 @@ GrTexture* GrGpuGL::createTextureHelper(const TextureDesc& desc, GR_GL(GenFramebuffers(1, &rtIDs.fTexFBOID)); GrAssert(rtIDs.fTexFBOID); - // If we are using multisampling and any extension other than the IMG - // one we will create two FBOs. We render to one and then resolve to - // the texture bound to the other. The IMG extension does an implicit - // resolve. - if (samples > 1 && kIMG_MSFBO != fMSFBOType && kNone_MSFBO != fMSFBOType) { + // If we are using multisampling and we will create two FBOS We render + // to one and then resolve to the texture bound to the other. + if (samples > 1 && kNone_MSFBO != fMSFBOType) { GR_GL(GenFramebuffers(1, &rtIDs.fRTFBOID)); GrAssert(0 != rtIDs.fRTFBOID); GR_GL(GenRenderbuffers(1, &rtIDs.fMSColorRenderbufferID)); @@ -904,20 +893,10 @@ GrTexture* GrGpuGL::createTextureHelper(const TextureDesc& desc, #if GR_COLLECT_STATS ++fStats.fRenderTargetChngCnt; #endif - if (kIMG_MSFBO == fMSFBOType && samples > 1) { - GR_GL(FramebufferTexture2DMultisample(GR_GL_FRAMEBUFFER, - GR_GL_COLOR_ATTACHMENT0, - GR_GL_TEXTURE_2D, - glDesc.fTextureID, - 0, - samples)); - - } else { - GR_GL(FramebufferTexture2D(GR_GL_FRAMEBUFFER, - GR_GL_COLOR_ATTACHMENT0, - GR_GL_TEXTURE_2D, - glDesc.fTextureID, 0)); - } + GR_GL(FramebufferTexture2D(GR_GL_FRAMEBUFFER, + GR_GL_COLOR_ATTACHMENT0, + GR_GL_TEXTURE_2D, + glDesc.fTextureID, 0)); if (rtIDs.fRTFBOID != rtIDs.fTexFBOID) { GrGLenum status = GR_GL(CheckFramebufferStatus(GR_GL_FRAMEBUFFER)); if (status != GR_GL_FRAMEBUFFER_COMPLETE) { diff --git a/gpu/src/GrGpuGL.h b/gpu/src/GrGpuGL.h index 3e7d79d2a1..01344072d5 100644 --- a/gpu/src/GrGpuGL.h +++ b/gpu/src/GrGpuGL.h @@ -167,8 +167,7 @@ private: enum { kNone_MSFBO = 0, kDesktop_MSFBO, - kApple_MSFBO, - kIMG_MSFBO + kApple_MSFBO } fMSFBOType; // Do we have stencil wrap ops. -- 2.34.1