vcl/opengl/gdiimpl.cxx | 60 ++++++++++++++++++++++++++++++++++++++++-- vcl/opengl/salbmp.cxx | 3 ++ vcl/opengl/scale.cxx | 5 +++ vcl/win/source/gdi/salgdi.cxx | 2 - 4 files changed, 67 insertions(+), 3 deletions(-)
New commits: commit f7efd54ba5ecfe165143e4951cb3e349acc2e364 Author: Jan Holesovsky <ke...@collabora.com> Date: Wed Nov 12 18:21:47 2014 +0100 opengl: Check for error at the end of every method that deals with OpenGL. Otherwise we will get the report of an error much much later, most probably in a totally unrelated part. Change-Id: I33d3c6d01126f5766beb179eeaeb3276a9078226 diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 744aa7f..1098b58 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -96,12 +96,16 @@ void OpenGLSalGraphicsImpl::PreDraw() if( mbOffscreen ) glBindFramebuffer( GL_FRAMEBUFFER, mnFramebufferId ); glViewport( 0, 0, GetWidth(), GetHeight() ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::PostDraw() { if( mbOffscreen ) glBindFramebuffer( GL_FRAMEBUFFER, 0 ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::freeResources() @@ -143,6 +147,8 @@ void OpenGLSalGraphicsImpl::ResetClipRegion() SAL_INFO( "vcl.opengl", "::ResetClipRegion" ); maContext.makeCurrent(); glDisable(GL_STENCIL_TEST); + + CHECK_GL_ERROR(); } // get the depth of the device @@ -237,8 +243,9 @@ void OpenGLSalGraphicsImpl::SetOffscreen( bool bOffscreen ) glBindFramebuffer( GL_FRAMEBUFFER, mnFramebufferId ); mpOffscreenTex.reset( new OpenGLTexture( GetWidth(), GetHeight() ) ); glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mpOffscreenTex->Id(), 0 ); - CHECK_GL_ERROR(); } + + CHECK_GL_ERROR(); } bool OpenGLSalGraphicsImpl::CreateSolidProgram( void ) @@ -251,6 +258,8 @@ bool OpenGLSalGraphicsImpl::CreateSolidProgram( void ) SAL_INFO( "vcl.opengl", "Solid Program Created" ); glBindAttribLocation( mnSolidProgram, GL_ATTRIB_POS, "position" ); mnColorUniform = glGetUniformLocation( mnSolidProgram, "color" ); + + CHECK_GL_ERROR(); return true; } @@ -263,6 +272,8 @@ bool OpenGLSalGraphicsImpl::CreateTextureProgram( void ) glBindAttribLocation( mnTextureProgram, GL_ATTRIB_POS, "position" ); glBindAttribLocation( mnTextureProgram, GL_ATTRIB_TEX, "tex_coord_in" ); mnSamplerUniform = glGetUniformLocation( mnTextureProgram, "sampler" ); + + CHECK_GL_ERROR(); return true; } @@ -276,6 +287,8 @@ bool OpenGLSalGraphicsImpl::CreateMaskedTextureProgram( void ) glBindAttribLocation( mnTextureProgram, GL_ATTRIB_TEX, "tex_coord_in" ); mnMaskedSamplerUniform = glGetUniformLocation( mnMaskedTextureProgram, "sampler" ); mnMaskSamplerUniform = glGetUniformLocation( mnMaskedTextureProgram, "mask" ); + + CHECK_GL_ERROR(); return true; } @@ -289,6 +302,8 @@ bool OpenGLSalGraphicsImpl::CreateMaskProgram( void ) glBindAttribLocation( mnTextureProgram, GL_ATTRIB_TEX, "tex_coord_in" ); mnMaskUniform = glGetUniformLocation( mnMaskProgram, "sampler" ); mnMaskColorUniform = glGetUniformLocation( mnMaskProgram, "mask" ); + + CHECK_GL_ERROR(); return true; } @@ -302,6 +317,8 @@ bool OpenGLSalGraphicsImpl::CreateLinearGradientProgram( void ) glBindAttribLocation( mnTextureProgram, GL_ATTRIB_TEX, "tex_coord_in" ); mnLinearGradientStartColorUniform = glGetUniformLocation( mnLinearGradientProgram, "start_color" ); mnLinearGradientEndColorUniform = glGetUniformLocation( mnLinearGradientProgram, "end_color" ); + + CHECK_GL_ERROR(); return true; } @@ -316,6 +333,8 @@ bool OpenGLSalGraphicsImpl::CreateRadialGradientProgram( void ) mnRadialGradientStartColorUniform = glGetUniformLocation( mnRadialGradientProgram, "start_color" ); mnRadialGradientEndColorUniform = glGetUniformLocation( mnRadialGradientProgram, "end_color" ); mnRadialGradientCenterUniform = glGetUniformLocation( mnRadialGradientProgram, "center" ); + + CHECK_GL_ERROR(); return true; } @@ -336,6 +355,8 @@ void OpenGLSalGraphicsImpl::BeginSolid( SalColor nColor, sal_uInt8 nTransparency } glUseProgram( mnSolidProgram ); glUniformColor( mnColorUniform, nColor, nTransparency ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::BeginSolid( SalColor nColor, double fTransparency ) @@ -353,6 +374,8 @@ void OpenGLSalGraphicsImpl::BeginSolid( SalColor nColor, double fTransparency ) } glUseProgram( mnSolidProgram ); glUniformColorf( mnColorUniform, nColor, fTransparency ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::BeginSolid( SalColor nColor ) @@ -364,6 +387,8 @@ void OpenGLSalGraphicsImpl::EndSolid( void ) { glUseProgram( 0 ); glDisable( GL_BLEND ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::BeginInvert( void ) @@ -371,12 +396,16 @@ void OpenGLSalGraphicsImpl::BeginInvert( void ) glEnable( GL_BLEND ); glBlendFunc( GL_ONE_MINUS_DST_COLOR, GL_ZERO ); BeginSolid( MAKE_SALCOLOR( 255, 255, 255 ) ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::EndInvert( void ) { EndSolid(); glDisable( GL_BLEND ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawPoint( long nX, long nY ) @@ -390,6 +419,8 @@ void OpenGLSalGraphicsImpl::DrawPoint( long nX, long nY ) glVertexAttribPointer( GL_ATTRIB_POS, 2, GL_FLOAT, GL_FALSE, 0, pPoint ); glDrawArrays( GL_POINTS, 0, 1 ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawLine( long nX1, long nY1, long nX2, long nY2 ) @@ -405,6 +436,8 @@ void OpenGLSalGraphicsImpl::DrawLine( long nX1, long nY1, long nX2, long nY2 ) glVertexAttribPointer( GL_ATTRIB_POS, 2, GL_FLOAT, GL_FALSE, 0, pPoints ); glDrawArrays( GL_LINES, 0, 2 ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawLines( sal_uInt32 nPoints, const SalPoint* pPtAry, bool bClose ) @@ -425,6 +458,8 @@ void OpenGLSalGraphicsImpl::DrawLines( sal_uInt32 nPoints, const SalPoint* pPtAr else glDrawArrays( GL_LINE_STRIP, 0, nPoints ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawConvexPolygon( sal_uInt32 nPoints, const SalPoint* pPtAry ) @@ -442,6 +477,8 @@ void OpenGLSalGraphicsImpl::DrawConvexPolygon( sal_uInt32 nPoints, const SalPoin glVertexAttribPointer( GL_ATTRIB_POS, 2, GL_FLOAT, GL_FALSE, 0, &aVertices[0] ); glDrawArrays( GL_TRIANGLE_FAN, 0, nPoints ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawConvexPolygon( const Polygon& rPolygon ) @@ -461,6 +498,8 @@ void OpenGLSalGraphicsImpl::DrawConvexPolygon( const Polygon& rPolygon ) glVertexAttribPointer( GL_ATTRIB_POS, 2, GL_FLOAT, GL_FALSE, 0, &aVertices[0] ); glDrawArrays( GL_TRIANGLE_FAN, 0, nPoints ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawRect( long nX, long nY, long nWidth, long nHeight ) @@ -533,6 +572,8 @@ void OpenGLSalGraphicsImpl::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rPol glVertexAttribPointer( GL_ATTRIB_POS, 2, GL_FLOAT, GL_FALSE, 0, pVertices.data() ); glDrawArrays( GL_TRIANGLES, 0, pVertices.size() / 2 ); glDisableVertexAttribArray( GL_ATTRIB_POS ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawTextureRect( const Size& rSize, const SalTwoRect& rPosAry, bool bInverted ) @@ -559,6 +600,8 @@ void OpenGLSalGraphicsImpl::DrawTextureRect( const Size& rSize, const SalTwoRect DrawRect( rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight ); glDisableVertexAttribArray( GL_ATTRIB_TEX ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawTexture( GLuint nTexture, const Size& rSize, const SalTwoRect& pPosAry, bool bInverted ) @@ -580,6 +623,8 @@ void OpenGLSalGraphicsImpl::DrawTexture( GLuint nTexture, const Size& rSize, con glBindTexture( GL_TEXTURE_2D, 0 ); glUseProgram( 0 ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawTextureWithMask( GLuint nTexture, GLuint nMask, const Size& rSize, const SalTwoRect& pPosAry ) @@ -608,6 +653,8 @@ void OpenGLSalGraphicsImpl::DrawTextureWithMask( GLuint nTexture, GLuint nMask, glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, 0 ); glUseProgram( 0 ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawMask( GLuint nMask, SalColor nMaskColor, const SalTwoRect& /*pPosAry*/ ) @@ -629,11 +676,12 @@ void OpenGLSalGraphicsImpl::DrawMask( GLuint nMask, SalColor nMaskColor, const S glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, 0 ); glUseProgram( 0 ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawLinearGradient( const Gradient& rGradient, const Rectangle& rRect ) { - if( mnLinearGradientProgram == 0 ) { if( !CreateLinearGradientProgram() ) @@ -667,6 +715,8 @@ void OpenGLSalGraphicsImpl::DrawLinearGradient( const Gradient& rGradient, const CHECK_GL_ERROR(); glUseProgram( 0 ); + + CHECK_GL_ERROR(); } void OpenGLSalGraphicsImpl::DrawRadialGradient( const Gradient& rGradient, const Rectangle& rRect ) @@ -704,6 +754,8 @@ void OpenGLSalGraphicsImpl::DrawRadialGradient( const Gradient& rGradient, const glDisableVertexAttribArray( GL_ATTRIB_TEX ); glUseProgram( 0 ); + + CHECK_GL_ERROR(); } @@ -1094,6 +1146,8 @@ SalColor OpenGLSalGraphicsImpl::getPixel( long nX, long nY ) PreDraw(); glReadPixels( nX, nY, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixel); PostDraw(); + + CHECK_GL_ERROR(); return MAKE_SALCOLOR( pixel[0], pixel[1], pixel[2] ); } @@ -1201,6 +1255,8 @@ bool OpenGLSalGraphicsImpl::drawAlphaBitmap( DrawTexture( nTexture, rBitmap.GetSize(), rPosAry ); glDisable( GL_BLEND ); PostDraw(); + + CHECK_GL_ERROR(); return true; } diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx index c5e4d61..18d713d 100644 --- a/vcl/opengl/salbmp.cxx +++ b/vcl/opengl/salbmp.cxx @@ -413,6 +413,8 @@ GLuint OpenGLSalBitmap::CreateTexture() } mbDirtyTexture = false; + + CHECK_GL_ERROR(); return mpTexture->Id(); } @@ -444,6 +446,7 @@ bool OpenGLSalBitmap::ReadTexture() glDeleteRenderbuffers( 1, &nRenderbufferDepthId ); glDeleteRenderbuffers( 1, &nRenderbufferColorId ); + CHECK_GL_ERROR(); return true; } diff --git a/vcl/opengl/scale.cxx b/vcl/opengl/scale.cxx index ccacfc4..da73786 100644 --- a/vcl/opengl/scale.cxx +++ b/vcl/opengl/scale.cxx @@ -57,6 +57,7 @@ GLuint OpenGLSalBitmap::ImplGetTextureProgram() mnTexSamplerUniform = glGetUniformLocation( mnTexProgram, "sampler" ); } + CHECK_GL_ERROR(); return mnTexProgram; } @@ -76,6 +77,7 @@ GLuint OpenGLSalBitmap::ImplGetConvolutionProgram() mnConvOffsetsUniform = glGetUniformLocation( mnConvProgram, "offsets" ); } + CHECK_GL_ERROR(); return mnConvProgram; } @@ -110,6 +112,8 @@ bool OpenGLSalBitmap::ImplScaleFilter( GLenum nFilter ) glDeleteFramebuffers( 1, &nFramebufferId ); mpTexture.reset( pNewTex ); + + CHECK_GL_ERROR(); return true; } @@ -227,6 +231,7 @@ bool OpenGLSalBitmap::ImplScaleConvolution( mnWidth = nNewWidth; mnHeight = nNewHeight; + CHECK_GL_ERROR(); return true; } commit 1254e56ea3aee206e9e6c06332c10ba775ad9bce Author: Jan Holesovsky <ke...@collabora.com> Date: Wed Nov 12 09:35:56 2014 +0100 windows opengl: Printer still needs WinSalGraphicsImpl. Change-Id: I298783d5f1c7e825f52eb3d61f45c0c3d3019f04 diff --git a/vcl/win/source/gdi/salgdi.cxx b/vcl/win/source/gdi/salgdi.cxx index 549a02f..4543489 100644 --- a/vcl/win/source/gdi/salgdi.cxx +++ b/vcl/win/source/gdi/salgdi.cxx @@ -589,7 +589,7 @@ WinSalGraphics::WinSalGraphics(WinSalGraphics::Type eType, bool bScreen, HWND hW mbFontKernInit(false), mnPenWidth(GSL_PEN_WIDTH) { - if (OpenGLHelper::isVCLOpenGLEnabled()) + if (OpenGLHelper::isVCLOpenGLEnabled() && !mbPrinter) mpImpl.reset(new WinOpenGLSalGraphicsImpl(*this)); else mpImpl.reset(new WinSalGraphicsImpl(*this)); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits