Pocket PC GAPI and OpenGL ES

This is sort of a newbie question.

I have a question to those of you who develop applications for Pocket PC (Windows CE). And use OpenGL ES. What is the relation of GAPI and OGL ES? Do they complement each other? Do I have to use GAPI functions to do the basic operations like double buffering or others? Obviously input handling can’t be handled by OGL ES at this point so I guess GAPI is good for it. Or it is better to leave all the operations to OGL ES?

I’ve seen the Vincent’s code and they do utilize GAPI, but I’m not sure what is the rational behind it.

Please advise.

Vincent itself actually does not use GAPI. I’ve been considering using PocketHAL, but as it turns out on all devices that I personally own the performance difference between a standard GDI Blit and these lower level APIs is negligable/non-existant. (See the table on the droneship web site) So the feature has been lingering around as enhancement request since January.

Since with OpenGL ES you always render into an off-screen surface which gets pushed into the screen by an explicit call, all that you really gain by using GAPI is a little bit less of GDI overhead plus possibly an overhead if your system actually does give you a backbuffer instead of the actual screen memory using GAPI.

GAPI, however, is still useful to gain access to all buttons and the joypad (if it has such) on the device.

  • HM

[ November 06, 2004: Message edited by: Hans-Martin Will ]

From tests that I’ve run over the last few years on a variety of Pocket PC devices, the GDI BitBlt can be up to an order of magnitude slower than even a simple memcpy from an offscreen back buffer in RAM to the GAPI buffer.

I couldn’t find any table on droneship.com that compared GDI blits to anything. I did find a table there that compared GAPI to PocketHAL and it looked like PocketHAL was up to 2x faster on some devices.

The advantage you do have in using GDI with Vincent though is that the GDI BitBlt performs clipping against your window boundary and against any other overlapping UI objects (menus, message boxes, etc.). Any sort of blit you used with GAPI is going to clobber anything on the screen. Not a big deal when running full-screen, but not good if you’re running in a window and a notification of some sort pops up.

[ November 08, 2004: Message edited by: don ]

Oops, true, not sure which table I was referring to, as the one given only compares GAPI and PocketHAL. Anyway, for Imageon (on a Toshiba) the times for PocketHal are the ones I get using BitBlt. For others I am in the 2-3ms range.

Anyway, I am still looking for a volunteer to help setting up PocketHAL support for Vicent ;-).

  • HM

[ November 07, 2004: Message edited by: Hans-Martin Will ]

Just curious as to which Toshiba device you’re seeing this sort of performance level?

I’m assuming you’re creating a top-down DIB section for your back buffer?

e750, also has Imageon chip/400MHz CPU like the 740 listed (they only changed the LCD screen itself). The problem with Imageon is the video bus, as I’ve been told.

DIBSection: You can see the code in the surface constructor in Surface.cpp, the blitting code is in eglSwapBuffers.

  • HM

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.