Graphics APIs to rely on?

I did some BeOS graphics programming a long time ago and would like to start again with Haiku, but I’m wondering which APIs I can rely on from now into the future, so that I can overcome expected compatibility issues in any software I release. With Haiku’s recent R1 Alpha 3 release, this seems like a good time to ask.

In order to use OpenGL (whether hardware or software rendered), I remember that placing a BGLView inside a BWindow was the legacy method, but R. Jason Sams saw performance issues with the locking model, and so created BDirectGLWindow for BeOS R5.1 (and as a leaked add-on for R5). As Haiku moves forward with Mesa, Gallium, etc., is it known yet whether one of those APIs (BGLView or BDirectGLWindow) will be the preferred method, or at least continually supported? Has there been talk of creating a new API to provide a GL context?

Separately, are there any graphics cards for which Haiku supports hardware 3D acceleration, either now or realistically expected in the near future?

On the 2D drawing front, how well-supported is BDirectWindow for windowed and full-screen drawing? Does it contain its own internal fallback, or do I need to provide a fallback to a regular BWindow for cards not supporting direct framebuffer blitting? Is the Haiku team planning another API to replace this one, or is everyone basically happy with it?

About 3D, we only really support software rendering at this point, and it's AFAIK not yet sure how this will put any "best practices" restrictions on the developer once this changes. For now, I think you're safe using a BGLView -- if that turns out not to be the best solution in the future, it should be a relatively small change, anyway.

About 2D, unlike BeOS, Haiku always provides this feature, and you don't have to care about a fallback anymore.

iirc, there is a port going on of the gallium 3d drivers which will provide 3d hardware acceleration… so officialy speaking there is no support for 3d hardware acceleration, i also not aware of new API design 'cause we are still being in alpha stage (there is no urge for it, imo).

gallium3d haikuware bounty is to be reassigned.