[Kstars-devel] [urgent] To release OpenGL into KDE 4.6 or not -- need inputs.

Akarsh Simha akarshsimha at gmail.com
Sat Jan 1 11:31:20 CET 2011


Hey

I need inputs (both from users and developers) here.

Since this mail is really long, I'm organizing it into
sections. Please read whatever is relevant to you and help me by
giving your opinions ASAP.

Context:
========

Trunk now has my solution to the OpenGL issue, and allows the user to
switch between OpenGL (which gives very dramatic improvements in
speed, but adds some bugs and regressions) and native QPainter
backends at run-time.

KDE SC 4.6 RC 2 is being tagged very shortly and trunk is frozen for
that on Jan 3rd! So we need to arrive at a decision as to whether to
get this in or not, into the release, by then.

The following are the code changes in summary (for developers):
===============================================================

+ SkyMap becomes a QGraphicsView

+ SkyMapQDraw is a QWidget and SkyMapGLDraw is a QGLWidget, and they
  both are made child widgets (of the viewport) of the
  QGraphicsView. These act as the drawing boards over which the sky
  map is drawn. All sky-map-related events are still handled by
  SkyMap (the QGraphicsView).

+ InfoBoxes are now a child widget of the SkyMapQDraw instead of the
  SkyMap. This is unclean, but a clean solution is not very
  straightforward, because the InfoBoxes widget (which acts like a
  manager for all the InfoBoxWidgets) starts capturing all events (and
  in the OpenGL case, starts painting its own background). My
  alternate solution involves doing away with this "manager" widget,
  but keeping it makes things so much more elegant. So it is hard,
  although we might have to eventually do away with it.

+ CMake detects OpenGL and enables this switching feature when GL is
  present


The following are the consequences, in summary (for packagers / users):
=======================================================================

FEATURES:

+ OpenGL is not required, but recommended, to build KStars.

+ If OpenGL is present, the user can switch to OpenGL rendering and
  enjoy smooth and speedy movements of the sky map.

  [Running at time step = 2 minutes, the frames/sec with OpenGL
  averages to about 16, whereas with native, it's about 7 on my
  machine. The QPainter version has visible coarseness in movement,
  while the OpenGL version has none]

REGRESSIONS:

+ In _all_ cases, the Info boxes flicker when being dragged around.

OPENGL SPECIFIC BUGS:

+ With OpenGL, Info boxes are not displayed at all

+ When using OpenGL, the Moon is not rendered at all (instead, a blank
  white square appears at high zoom, and a blue star appears at low
  zoom)

+ When using OpenGL, the Sun is rendered as a star when zoomed out.

(I'm sure there are a few more)


Summary of ugly hacks made (for developers):
============================================

These are the not-so-clean bits of code that are floating around.

+ We have two classes as friends of SkyMap, which is not really
  good. Some of the stuff should be handled entirely in the individual
  classes themselves.

+ It is not certain whether setting the widget as a child of the
  viewport of a QGV is the only way around the problem of being able
  to switch dynamically between two widgets. I remember carrying out a
  bunch of experiments and arriving at this solution, but I'm not
  sure. The documentation says that one should probably set it as the
  viewport widget itself, but I don't recall the result of trying
  this. In any case, this is the next thing I'm going to test.

+ Setting InfoBoxes as a child widget of the SkyMapQDraw is not a very
  good idea IMO, but that requires the least "big" changes at the
  moment.


Summary of ill-effects for users:
=================================

If you can tolerate some flicker while moving around those infoboxes
(if you ever move them), I expect you should be okay.

My take on this issue:
======================

I think we should release OpenGL rendering, and here are my arguments
in favor of this:

1. OpenGL is a big improvement, when it comes to painting speed. If
   you can tolerate some bugs, it's a better thing to use OpenGL
   because of speed. As a user, I would prefer the GL engine.

2. The code is bad, but isn't terrible IMHO. Considering that the
   documentation is sometimes unclear (at least to me), and various
   solutions suggested in the documentation are seemingly not working,
   I think we should accept this solution.

3. The maximum regression I could observe in my usage is the
   flickering of Infoboxes in QPainter mode.

4. Yes, the GL rendering is still incomplete. But we warn users that
   it is experimental. I don't see why one shouldn't benefit from
   speed just because of some shortcomings. Besides, you can switch to
   QPainter if a bug in GL is a significant usability issue.

5. Yes, there are two days for RC 2 release and that's too short for
   testing a major change. But I'd like to argue that KStars has not
   been tested anyway. Yes, we got one mail about the black screen
   here, but there is _no_ bug on the tracker that talks about KStars
   producing a black screen. So I'm presuming that any testing before
   release is testing that we do. I will try and promote testing in
   the next one week between RC2 and final tag by blogging, and will
   probably do some QA myself. We could even use a GCI task for
   testing.
   
   If there are critical bugs found in RC2, we could always revert to
   the last working version in time for the final tag.

6. Considering the rate of development in KStars, I fear we will end
   up releasing the same code for KDE SC 4.7 if we don't do it
   now. Why postpone a feature by 6 months?

7. By releasing the OpenGL version, we can get valuable feedback on it
   from our users.

An apology:
===========

I know I kinda said I'd take a shot at this issue, but I had to
postpone this till vacations, which is now, which unfortunately had to
be so close to the release. I admit I might've been able to get it
working a little earlier had I worked a little harder on this, but you
see work stretches to fill the time before the deadline :).

The Merger decision:
====================

Since Alexey has not been around for a while, I volunteer to take
charge of this issue, and I'm going to take this decision by majority
vote. At the moment, my vote is a +1. Harry gave me a -1 and Med gave
me a +1, but I guess the decisions will be more educated after this
mail. As of now, it stands at +1 overall and so I'm going to merge
OpenGL rendering before the 3rd if I get no more replies / opinions
regarding this.

Regards
Akarsh
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
Url : http://mail.kde.org/pipermail/kstars-devel/attachments/20110101/37c5ee01/attachment.sig 


More information about the Kstars-devel mailing list