Hi all,

This patch series brings a new EGL (meta) driver, libegl.a.  Like
libegldrm.a living under state_trackers/egl/, the build process uses it
to build various EGL drivers, like egl_i915.so, egl_radeon.so, and etc.
I've only tested egl_i915. myself, and others are only compile tested.

This driver should be more flexible/complete than the others.  After it
is tested and accepted, I want to remove egl_softpipe and egl_xdri, as
they are deprecated by this driver.  I also plan to add support for
EGL_MESA_screen_surface and replace state_trackers/egl/.

This driver consists of three part

* EGL Driver Interface
* Native Display(s)
* State Tracker Loader

The first part allows it to be loaded as an EGL driver, and all common
functions are implemented.

The second part abstracts a native display.  A native display is the X
server on most Linux desktops.  But it may also be KMS, Android, or
others.  The abstraction makes it easy to support a new native display.
Right now, there is only support for X server.  It supports
XImage/XShmImage for software rendering.  And it also supports DRI2/GLX
when the X server supports them.  It talks the protocol directly and
there is no dependency on libGL.  It will ask the server for the driver
name, and if the hardware pipe driver matches, it will be used.  The
detection is done at runtime and there is a fallback mechanism.  One may
also force the use of the software rendering by setting the env variable
EGL_SOFTWARE=1.

This should be the first time we have accelerated OpenVG and OpenGL ES
on X11.  All progs/egl/x* should render correctly with the new driver.
All progs/openvg/* work too.  But some of the OpenVG demos render
incorrectly when used with the i915 pipe driver.  I don't have other
graphics hardwares that help me identify where the problem is :(

The last part allows multiple client APIs to be used at the same time.
Currently, the state tracker API is defined in st_public.h.  Difference
state trackers (say, OpenVG and OpenGL) define the same API that the EGL
cannot distinguish.  This driver solves the problem through the use of
dladdr().  This is supposed to be temporary.  I want to rework
st_public.h after figuring out what a state tracker should look like.
It might base on

http://www.mail-archive.com/mesa3d-dev@lists.sourceforge.net/msg09789.html

This is kinda a lenghty mail.  Thank you for the patience and

Happy New Year!

-- 
Regards,
olv

Attachment: egl_g3d.tar.gz
Description: Binary data

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to