Hello, All!
Is it possible to communicate somehow with loaded 2D graphics driver while
using Photon ? As far as I can understand mesa3d which is shipped with QNX
uses such interface to obtain 3D graphics interface if it is available in
loaded driver by calling devg_get_3dfuncs driver's function. Could anyone
tell me more about how to do that ? Really driver has devg_get_myown_funcs
call, which is responsible for obtaining pointers to few very important
functions to which common graphics DDK doesn't provide interface, for
example, controlling gamma, color LUTs, backlight control and other
chip-specific functions.
P.S. I've an interesting question about graphics driver functions
reenterability also. Is it need to provide mutex locking of the context
and core functions set of the graphics driver ? Because I can observe the
following behaviour: when "gears" mesa3d demo (shipped with QNX also) is
running, all works as suspected, but when I dragging "gears" window over
screen, graphics driver's context blit function can be called twice, the
second time, while first function call still executed, which causes 2D
accellerator lockup.
Blit function looks like this:
1. Setup Accellerator Context data: ROP, Chroma, etc
2. Prepear Graphics Engine command.
3. Execute GE command
4. Wait for command completeness
So when first call waiting in step 4 (window blit), the second call got
stuck in the step 3(GL data offscreen blit), because it is impossible to
execute another GE command, while the first command being processed.
This happen only with mesa3d demos shipped with QNX, other photon
applications works without race conditions in the graphics driver
functions. Looks like mesa3d driver obtaining not only 3d interface and a
2d interface driver functions also and call them directly, disregarding on
the current graphics driver state.
Thanks in advance for the answers !
With best regards, Mike Gorchak. E-mail:
mike@malva.ua