- // Clear the list of bound textures
- mImpl->boundTextures.Clear();
-
- mImpl->renderAlgorithms.ProcessRenderInstruction(
- instruction,
- *mImpl->currentContext,
- mImpl->renderBufferIndex,
- depthBufferAvailable,
- stencilBufferAvailable,
- mImpl->boundTextures,
- clippingRect );
-
- // Synchronise the FBO/Texture access when there are multiple contexts
- if ( mImpl->currentContext->IsSurfacelessContextSupported() )
- {
- // Check whether any binded texture is in the dependency list
- bool textureFound = false;
-
- if ( mImpl->boundTextures.Count() > 0u && mImpl->textureDependencyList.Count() > 0u )
- {
- for ( auto textureId : mImpl->textureDependencyList )
- {
-
- textureFound = std::find_if( mImpl->boundTextures.Begin(), mImpl->boundTextures.End(),
- [textureId]( GLuint id )
- {
- return textureId == id;
- } ) != mImpl->boundTextures.End();
- }
- }
-
- if ( textureFound )
- {
- if ( instruction.mFrameBuffer )
- {
- // For off-screen buffer
-
- // Wait until all rendering calls for the currently context are executed
- mImpl->glContextHelperAbstraction.WaitClient();
+ // Scissor's value should be set based on the default system coordinates.
+ // When the surface is rotated, the input values already were set with the rotated angle.
+ // So, re-calculation is needed.
+ scissorArea = RecalculateScissorArea(scissorArea, surfaceOrientation, viewportRect);