[Bf-committers] Status of OpenGL compatibility layer.

Jason Wilkins jason.a.wilkins at gmail.com
Sun Dec 2 20:18:11 CET 2012


I've been doing regular merges of the Swiss-cheese branch with trunk
to keep the code from becoming stale.  In addition I've been working
on testing and documentation.  All efforts have been slow but steady.

There has been some creeping uncertainty that the merges are not
perfect.  The merge seems to sometimes make some very bad decisions
about how to merge and I seem to only catch these by luck.  I suspect
it might have done things I did not happen to see.  I have made a
giant patch that I intend to go over line by line and make sure
everything makes sense.

However, I've given up on merging the game engine, since I do not
understand the differences between Swiss-cheese's and trunk's
versions.

There are several minor changes that I'd like to start merging into
trunk and since we are at the beginning the next release cycle it
seems like a good time.  These are just some things that present a
headache when merging, so I'll get them reviewed and merged in now.

I think it is very important that I devise a means to test all of the
code before full review.  There are about 5,000 places where the new
OpenGL layer is used throughout the code, but even opening all region
types and displaying one of every kind of object only tests about 2000
of those lines.  I have enabled code coverage and have a script I've
written to help me gradually track all of these untested lines down
and make sure they get run.

I have written a rough draft of most of the documentation.  Since
replacing deprecated functions requires a significant change in how
basic things are drawn, the documentation needs to quite good because
it will affect lots of contributors.  It needs to be both technically
good by answering the question, "How do I do this now?," and manage
the outrage factor the makes people as, "Why do I have to do this like
this now?!" :-)

I could probably do all of this in a week if I worked full time.
Unfortunately, I cannot dedicate full time right now though, so I am
aiming for end of the year.

Summary:
* I need to do a full self-review to make sure merging hasn't mangled anything.
* Swiss-cheese's game engine is in a weird state due to differences
from trunk I'm not familiar with.
* I'm going to start submitting patches from Swiss-cheese to make
maintenance easier.
* I have a system in place to test and track the thousands of changes
in drawing code
* Documentation at this point might be good enough for reviewers but
not for the community.
* I estimate I have 40-50 hours of work to do before review, but I
cannot do it all at once.
* Aiming to start review immediately next year.

Plan:
1st week: Self code review and create any patches that can be applied now
2nd-3rd week: Achieve full code coverage.  Automate if possible.
Visually compare w/ trunk
4th week: Holiday
5th week: Profile and track down any performance problems.  Improve
documentation.


More information about the Bf-committers mailing list