I don't think the line drawing alone is really intense - it's a really basic implementation. Something else might be dragging it down.
- (void)drawLine:(int)x1 y1:(int)y1 x2:(int)x2 y2:(int)y2
{
[mCurrSupport bindTexture:nil];
float mVertexCoords[4];
mVertexCoords[0] = x1;
mVertexCoords[1] = y1;
mVertexCoords[2] = x2;
mVertexCoords[3] = y2;
glPushMatrix();
glTranslatef(mDrawX, mDrawY, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, mVertexCoords);
glEnable(GL_LINE_SMOOTH);
glLineWidth(mThickness * [SPStage contentScaleFactor]);
glColor4f(mStrokeRed, mStrokeGreen, mStrokeBlue, mDrawAlpha);
glDrawArrays(GL_LINE_LOOP, 0, 2);
glDisable(GL_LINE_SMOOTH);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
}
I'll put up a test build with the workaround.