| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
When the user sets EGL_DRIVER to egl_dri2 (or egl_glx), make sure the
built-in driver is used. The user might leave the outdated egl_dri2.so
(or egl_glx.so) on the filesystem and we do not want to load it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The idea is to be able to match a driver using the following order
try egl_gallium with hw renderer
try egl_dri2
try egl_gallium with sw renderer
try egl_glx
given the module list
egl_gallium
egl_dri2
egl_glx
For that, UseFallback initialization option is added. The module list
is matched twice: with the option unset and with the option set. In the
first pass, egl_gallium skips its sw renderer and egl_glx rejects to
initialize since UseFallback is not set. In the second pass,
egl_gallium skips its hw renderer and egl_dri2 rejects to initialize
since UseFallback is set. The process stops at the first driver that
initializes the display.
|
|
|
|
|
|
| |
Add initialization options that drv->API.Initialize should support.
Replace drv->Probe by TestOnly initialization option and simplify
_eglMatchDriver.
|
|
|
|
|
| |
Reorder/rename and document the fields that should be set by the driver during
initialization. Drop the major/minor arguments from drv->API.Initialize.
|
|
|
|
|
| |
Setting EGL_DRIVER forces the driver to be loaded, as documented. There
should be no fallbacks.
|
|
|
|
|
|
|
|
| |
Update SConscripts to re-enable or add support for EGL on windows and
x11 platforms respectively. targets/egl-gdi is replaced by
targets/egl-static, where "-static" means pipe drivers and state
trackers are linked to statically by egl_gallium, and egl_gallium is a
built-in driver of libEGL. There is no more egl_gallium.dll on Windows.
|
|
|
|
|
| |
This target is based on and replaces egl-gdi. It is suitable for both
windows and x11.
|
|
|
|
|
| |
These two drivers are small in size. Making them built-in should
simplify packaging.
|
|
|
|
|
|
| |
When the driver is the last reference to libEGL.so, unloading it will
cause libEGL.so to be unmapped and give problems. Disable the unloading
for now. Still have to figure out the right timing to unload drivers.
|
|
|
|
|
| |
So that the directory part of EGL_DRIVER, if exists, is prepended to the
search path. This commit also adds a sanity check to _eglLog.
|
|
|
|
| |
We do not want them to be all over the places.
|
|
|
|
|
|
| |
Remove duplicated include.
Signed-off-by: Brian Paul <[email protected]>
|
|
|
|
| |
Individual drivers still need to support and enable the extension.
|
|
|
|
|
| |
This allows Mesa EGL to be compiled with eglext.h that does not define
EGL_MESA_screen_surface.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Driver loading is now splitted into two stages. In the first stage, an
_EGLModule is created for each driver: user driver, default drivers, and
all files in the search directories that start with "egl_". Modules are
not loaded at this stage.
In the second stage, each module is loaded to initialize a display. The
process stops at the first module that can initialize the display.
If eglGetProcAddress is called before eglInitialize, the same code path
will be taken to find the first module that supports
EGL_DEFAULT_DISPLAY. Because we do not want to initialize the display,
drv->Probe is used instead in this case.
|
|
|
|
|
| |
Windows unloads DLLs before atexit. Make _eglUnloadDrivers no-op on
Windows for now.
|
|
|
|
| |
It is no longer needed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change makes st/egl build a single egl_gallium.so and multiple
st_<API>.so and pipe_<HW>.so. When a display is initialized, the
corresponding pipe driver will be loaded. When a context is created,
the corresponding state tracker will be loaded.
Unlike DRI drivers, no ABI compatibility is maintained. egl_gallium,
pipe drivers and state trackers should always be distributed as a single
package. As such, there is only a single src/gallium/targets/egl/ that
builds everything for the package.
|
|
|
|
|
|
| |
Merge multiple egl_<platform>_<pipe>.so into a single
egl_gallium_<pipe>.so. The environment variable EGL_PLATFORM is now
used to modify the return value of _eglGetNativePlatform.
|
|
|
|
|
|
|
|
|
|
|
| |
This commit introduces type-safe platform displays internally. A
platform display consists of a generic pointer and an enum that
specifies the platform.
An EGLDisplay is created from a platform display. Native displays
become platform displays whose platform is determined by
_eglGetNativePlatform(). Platform windows and pixmaps may also be
introduced if needed.
|
|
|
|
|
| |
A platform is already used to mean a window system in EGL. No need to
use a different term.
|
|
|
|
|
| |
A platform means a native window system in EGL. Use OS that follows
Gallium instead.
|
|
|
|
| |
Fix several portability issues and add SConscript for Windows build.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there is no user driver or any matching display drivers we fall
back to the default driver. This patch lets us have a list of default
drivers instead of just one. The drivers are loaded in turn and we
attempt to initialize the display. If it fails we unload the driver
and move on to the next one.
Compared to the display driver mechanism, this avoids loading a number
of drivers and then only using one. Also, we call Initialize to see
if the driver will work instead of relying on Probe. To know for sure
that a driver will work, Probe really have to do a full Initialize, so
we will just use Initialize directly.
|
|
|
|
|
| |
It would do strlen(library_suffix()) in _eglLoaderFile(), with
library_suffix() returning NULL. So obviuosly not used or tested.
|
|
|
|
| |
That is, don't dlopen(egl_glx) when we know we need to append .so.
|
|
|
|
| |
The function can be used by a driver to check each search path of EGL.
|
|
|
|
| |
Just follow gcc's advices here.
|
|
|
|
|
| |
Lock the global mutex in _eglPreloadDrivers and _eglAllocScreenHandle.
Add comments to why certain pathes do not need locking.
|
| |
|
|
|
|
|
|
|
| |
Rename _eglPreloadFile to _eglLoaderFile, and _eglPreloadFile to
_eglLoaderFile. There are several _eglPreload* functions. The
callbacks do not belong to them and it should be better to give them a
different prefix.
|
|
|
|
|
| |
The driver suffix might be NULL on some platforms. Perform the matching
only when there is a suffix.
|
|
|
|
|
| |
There were some refactorings with the addition of EGL_DRIVERS_PATH.
They made some platform #ifdef's unnecessary.
|
|
|
|
|
| |
Specifically, ignore EGL_DRIVERS_PATH when an application is
setuid/setgid. And ignore EGL_DRIVER when there is a slash in it.
|
|
|
|
|
|
|
|
|
| |
EGL_DRIVERS_PATH gives a list of colon-separated directories. The given
directories will be searched when preloading drivers.
This is based on Mike Stroyan's patch, which honors the variable in
_eglPreloadDisplayDrivers. It is extended to honor the variable also in
_eglPreloadUserDriver and _eglPreloadDefaultDriver in this version.
|
| |
|
|
|
|
| |
Mainly to remove eglcurrent.h and egldisplay.h from eglglobals.h.
|
|
|
|
|
| |
_eglCloseDriver is no-op and _eglOpenDriver does nothing but call
_eglMatchDriver. Export _eglMatchDriver directly.
|
|
|
|
| |
Individual drivers still need to implement the API hooks.
|
|
|
|
|
|
| |
Add a platform specific function to turn a library name to a library
path. It is used to convert EGL_DRIVER or the default driver to a
library path that can be loaded.
|
|
|
|
|
| |
This function is not used and should have been removed by last commit.
My mistake.
|
|
|
|
|
|
| |
With the addition egl_x11_swrast, egl_softpipe is sort of deprecated.
The new driver serves the same purpose as egl_softpipe does. It is
based on egl_g3d and provides more features.
|
|
|
|
|
|
| |
In current design, multiple drivers will probe the same display and the
best driver is determined. The cache can be used by the drivers to
store and share the probed data.
|
|
|
|
|
| |
Make drv->Probe return a score so that the matching can be done by
finding the driver with the highest score.
|
|
|
|
|
| |
The macro is used to determine if dlfcn.h or dirent.h is available.
POSIX is a better name than X in such case.
|
|
|
|
| |
Remove _eglPreloadDriver, _eglLookupDriver, and _eglSplitDisplayString.
|
|
|
|
|
|
| |
It can be used to load the user driver specified by EGL_DRIVER, or a set
of drivers specified by EGL_DISPLAY, or the default driver, and in that
order.
|