[Libreoffice-commits] core.git: Branch 'feature/opengl-vcl' - vcl/opengl vcl/source
Jan Holesovsky
kendy at collabora.com
Fri Nov 14 06:45:10 PST 2014
vcl/opengl/gdiimpl.cxx | 8 ++++++++
vcl/opengl/texture.cxx | 20 +++++++++++++++++---
vcl/opengl/x11/gdiimpl.cxx | 2 ++
vcl/source/opengl/OpenGLContext.cxx | 8 ++++++++
vcl/source/opengl/OpenGLHelper.cxx | 9 +++++++++
5 files changed, 44 insertions(+), 3 deletions(-)
New commits:
commit e7f2088c9a194ccc8f888d393032316948f6981b
Author: Jan Holesovsky <kendy at collabora.com>
Date: Fri Nov 14 15:43:44 2014 +0100
opengl: Add many more CHECK_GL_ERROR()'s before returning from functions.
Change-Id: I63c147acf9a4013008b0f6d76867186f04ee57d5
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx
index 09e80f8..dab78f3 100644
--- a/vcl/opengl/gdiimpl.cxx
+++ b/vcl/opengl/gdiimpl.cxx
@@ -120,6 +120,7 @@ void OpenGLSalGraphicsImpl::PostDraw()
glDisable( GL_SCISSOR_TEST );
if( mbUseStencil )
glDisable( GL_STENCIL_TEST );
+
CHECK_GL_ERROR();
}
@@ -144,6 +145,8 @@ void OpenGLSalGraphicsImpl::ImplSetClipBit( const vcl::Region& rClip, GLuint nMa
glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
glStencilMask( 0x00 );
glDisable( GL_STENCIL_TEST );
+
+ CHECK_GL_ERROR();
}
bool OpenGLSalGraphicsImpl::setClipRegion( const vcl::Region& rClip )
@@ -174,6 +177,7 @@ bool OpenGLSalGraphicsImpl::setClipRegion( const vcl::Region& rClip )
ImplSetClipBit( rClip, 0x01 );
}
+ CHECK_GL_ERROR();
return true;
}
@@ -301,6 +305,7 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture()
glViewport( 0, 0, GetWidth(), GetHeight() );
DrawTexture( maOffscreenTex, aPosAry );
+ CHECK_GL_ERROR();
return true;
}
@@ -679,6 +684,8 @@ void OpenGLSalGraphicsImpl::DrawAlphaTexture( OpenGLTexture& rTexture, const Sal
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
DrawTexture( rTexture, rPosAry, bInverted );
glDisable( GL_BLEND );
+
+ CHECK_GL_ERROR();
}
void OpenGLSalGraphicsImpl::DrawTextureWithMask( OpenGLTexture& rTexture, OpenGLTexture& rMask, const SalTwoRect& pPosAry )
@@ -831,6 +838,7 @@ void OpenGLSalGraphicsImpl::DrawAxialGradient( const Gradient& rGradient, const
glDisableVertexAttribArray( GL_ATTRIB_TEX );
glUseProgram( 0 );
+
CHECK_GL_ERROR();
}
diff --git a/vcl/opengl/texture.cxx b/vcl/opengl/texture.cxx
index 005fb66..5c2f3c1 100644
--- a/vcl/opengl/texture.cxx
+++ b/vcl/opengl/texture.cxx
@@ -40,6 +40,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, bool bAllocate )
if( bAllocate )
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, nWidth, nHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL );
glBindTexture( GL_TEXTURE_2D, 0 );
+
+ CHECK_GL_ERROR();
}
// texture with content retrieved from FBO
@@ -59,6 +61,7 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nX, int nY, int nWidth, int nHeight )
glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, nX, nY, nWidth, nHeight, 0 );
CHECK_GL_ERROR();
glBindTexture( GL_TEXTURE_2D, 0 );
+
CHECK_GL_ERROR();
}
@@ -80,6 +83,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, int nFormat, int
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, mnWidth, mnHeight, 0, nFormat, nType, pData );
glBindTexture( GL_TEXTURE_2D, 0 );
+
+ CHECK_GL_ERROR();
}
ImplOpenGLTexture::~ImplOpenGLTexture()
@@ -87,6 +92,8 @@ ImplOpenGLTexture::~ImplOpenGLTexture()
SAL_INFO( "vcl.opengl", "~OpenGLTexture " << mnTexture );
if( mnTexture != 0 )
glDeleteTextures( 1, &mnTexture );
+
+ CHECK_GL_ERROR();
}
OpenGLTexture::OpenGLTexture() :
@@ -198,18 +205,24 @@ void OpenGLTexture::SetFilter( GLenum nFilter )
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nFilter );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nFilter );
}
+
+ CHECK_GL_ERROR();
}
void OpenGLTexture::Bind()
{
if( mpImpl )
glBindTexture( GL_TEXTURE_2D, mpImpl->mnTexture );
+
+ CHECK_GL_ERROR();
}
void OpenGLTexture::Unbind()
{
if( mpImpl )
glBindTexture( GL_TEXTURE_2D, 0 );
+
+ CHECK_GL_ERROR();
}
bool OpenGLTexture::Draw()
@@ -243,6 +256,7 @@ bool OpenGLTexture::Draw()
glDisableVertexAttribArray( 1 );
glBindTexture( GL_TEXTURE_2D, 0 );
+ CHECK_GL_ERROR();
return true;
}
@@ -269,12 +283,12 @@ void OpenGLTexture::Read( GLenum nFormat, GLenum nType, sal_uInt8* pData )
GLuint nFramebufferId;
glGenFramebuffers( 1, &nFramebufferId );
glBindFramebuffer( GL_FRAMEBUFFER, nFramebufferId );
- CHECK_GL_ERROR();
+ CHECK_GL_ERROR();
glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, Id(), 0 );
- CHECK_GL_ERROR();
+ CHECK_GL_ERROR();
glReadPixels( maRect.Left(), mpImpl->mnHeight - maRect.Top(), GetWidth(), GetHeight(), nFormat, nType, pData );
- CHECK_GL_ERROR();
+ CHECK_GL_ERROR();
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glDeleteFramebuffers( 1, &nFramebufferId );
diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx
index 3a2cfdf..71a04f3 100644
--- a/vcl/opengl/x11/gdiimpl.cxx
+++ b/vcl/opengl/x11/gdiimpl.cxx
@@ -112,6 +112,7 @@ bool X11OpenGLSalGraphicsImpl::FillPixmapFromScreen( X11Pixmap* pPixmap, int nX,
XFreeGC( pDisplay, aGC );
XDestroyImage( pImage );
+ CHECK_GL_ERROR();
return true;
}
@@ -159,6 +160,7 @@ bool X11OpenGLSalGraphicsImpl::RenderPixmapToScreen( X11Pixmap* pPixmap, int nX,
PostDraw();
+ CHECK_GL_ERROR();
return true;
}
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index ab7e34d..cbf2bf2 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -78,6 +78,8 @@ OpenGLContext::~OpenGLContext()
glXDestroyGLXPixmap(m_aGLWin.dpy, m_aGLWin.glPix);
}
#endif
+
+ CHECK_GL_ERROR();
}
void OpenGLContext::requestLegacyContext()
@@ -160,6 +162,8 @@ int InitTempWindow(HWND *hwnd, int width, int height, PIXELFORMATDESCRIPTOR inPf
{
return -1;
}
+
+ CHECK_GL_ERROR();
return 0;
}
@@ -198,6 +202,8 @@ bool WGLisExtensionSupported(const char *extension)
if ((p==supported || p[-1]==' ') && (p[extlen]=='\0' || p[extlen]==' '))
return 1; // Match
}
+
+ CHECK_GL_ERROR();
}
bool InitMultisample(PIXELFORMATDESCRIPTOR pfd, int& rPixelFormat,
@@ -293,6 +299,7 @@ bool InitMultisample(PIXELFORMATDESCRIPTOR pfd, int& rPixelFormat,
ReleaseDC(hWnd, glWin.hDC);
DestroyWindow(hWnd);
+ CHECK_GL_ERROR();
return bArbMultisampleSupported;
}
#endif
@@ -448,6 +455,7 @@ GLXFBConfig* getFBConfigForPixmap(Display* dpy, int& nBestFBC, bool bUseDoubleBu
}
}
+ CHECK_GL_ERROR();
return pFBC;
}
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
index a6073c4..bbcaefd 100644
--- a/vcl/source/opengl/OpenGLHelper.cxx
+++ b/vcl/source/opengl/OpenGLHelper.cxx
@@ -144,6 +144,7 @@ GLint OpenGLHelper::LoadShaders(const OUString& rVertexShaderName,const OUString
return 0;
}
+ CHECK_GL_ERROR();
return ProgramID;
}
@@ -184,6 +185,8 @@ void OpenGLHelper::renderToFile(long nWidth, long nHeight, const OUString& rFile
} catch (...) {
SAL_WARN("vcl.opengl", "Error writing png to " << rFileName);
}
+
+ CHECK_GL_ERROR();
}
BitmapEx OpenGLHelper::ConvertBGRABufferToBitmapEx(const sal_uInt8* const pBuffer, long nWidth, long nHeight)
@@ -326,6 +329,8 @@ void OpenGLHelper::createFramebuffer(long nWidth, long nHeight, GLuint& nFramebu
}
glBindRenderbuffer(GL_RENDERBUFFER, 0);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
+
+ CHECK_GL_ERROR();
}
float OpenGLHelper::getGLVersion()
@@ -340,6 +345,8 @@ float OpenGLHelper::getGLVersion()
fVersion += (aVersion[2] - '0')/10.0;
}
}
+
+ CHECK_GL_ERROR();
return fVersion;
}
@@ -396,6 +403,7 @@ bool OpenGLHelper::GetVisualInfo(Display* pDisplay, int nScreen, XVisualInfo& rV
rVI = *pVI;
XFree( pVI );
+ CHECK_GL_ERROR();
return true;
}
@@ -446,6 +454,7 @@ GLXFBConfig OpenGLHelper::GetPixmapFBConfig( Display* pDisplay, bool& bInverted
return 0;
}
+ CHECK_GL_ERROR();
return aFbConfigs[i];
}
More information about the Libreoffice-commits
mailing list