diff options
Diffstat (limited to 'vcl/opengl/gdiimpl.cxx')
-rw-r--r-- | vcl/opengl/gdiimpl.cxx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index b1898df3e5c8..b487468f10eb 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -993,7 +993,11 @@ bool scaleTexture(const rtl::Reference< OpenGLContext > &xContext, int nNewWidth = nWidth / ixscale; int nNewHeight = nHeight / iyscale; - OpenGLProgram* pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader"); + OString sUseReducedRegisterVariantDefine; + if (xContext->getOpenGLCapabilitySwitch().mbLimitedShaderRegisters) + sUseReducedRegisterVariantDefine = OString("#define USE_REDUCED_REGISTER_VARIANT\n"); + + OpenGLProgram* pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader", sUseReducedRegisterVariantDefine); if (pProgram == nullptr) return false; @@ -1058,6 +1062,11 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( // See OpenGLSalBitmap::ImplScaleArea(). bool areaScaling = false; bool fastAreaScaling = false; + + OString sUseReducedRegisterVariantDefine; + if (mpContext->getOpenGLCapabilitySwitch().mbLimitedShaderRegisters) + sUseReducedRegisterVariantDefine = OString("#define USE_REDUCED_REGISTER_VARIANT\n"); + OUString textureFragmentShader; if( ixscale >= 2 && iyscale >= 2 ) // scale ratio less than 50% { @@ -1122,7 +1131,7 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( { if( !UseProgram( "transformedTextureVertexShader", textureFragmentShader.isEmpty() ? "maskedTextureFragmentShader" : textureFragmentShader, - "#define MASKED" ) ) + "#define MASKED\n" + sUseReducedRegisterVariantDefine)) return; mpProgram->SetTexture( "mask", aInMask ); GLfloat aMaskCoord[8]; @@ -1134,7 +1143,8 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( else { if( !UseProgram( "transformedTextureVertexShader", - textureFragmentShader.isEmpty() ? "textureFragmentShader" : textureFragmentShader ) ) + textureFragmentShader.isEmpty() ? "textureFragmentShader" : textureFragmentShader, + sUseReducedRegisterVariantDefine)) return; } |