diff options
author | Marek Olšák <[email protected]> | 2017-10-18 20:23:00 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-10-18 20:23:42 +0200 |
commit | 84f3afc2e122cb418573f1e9c61716520f9859c1 (patch) | |
tree | fd8f3bbc2b7f5eeb905a5699cf0f5bdec59f95d0 /src/egl/main | |
parent | 2cb9ab53dd3ae6850a2611b01695f7449d24614d (diff) |
Revert "egl: move alloc & init out of _eglBuiltInDriver{DRI2,Haiku}"
This reverts commit 8cb84c8477a57ed05d703669fee1770f31b76ae6.
This fixes crashing shader-db/run.
Diffstat (limited to 'src/egl/main')
-rw-r--r-- | src/egl/main/README.txt | 9 | ||||
-rw-r--r-- | src/egl/main/egldriver.c | 8 | ||||
-rw-r--r-- | src/egl/main/egldriver.h | 4 |
3 files changed, 9 insertions, 12 deletions
diff --git a/src/egl/main/README.txt b/src/egl/main/README.txt index 9b5fd410618..1af99599729 100644 --- a/src/egl/main/README.txt +++ b/src/egl/main/README.txt @@ -19,12 +19,13 @@ Bootstrapping: When the apps calls eglInitialize() a device driver is selected and loaded (look for _eglAddDrivers() and _eglLoadModule() in egldriver.c). -The built-in driver's entry point function is then called and given -a freshly allocated and initialised _EGLDriver, with default fallback -entrypoints set. +The built-in driver's entry point function is then called. This driver function +allocates, initializes and returns a new _EGLDriver object (usually a +subclass of that type). As part of initialization, the dispatch table in _EGLDriver->API must be -populated with all the EGL entrypoints. Some functions like +populated with all the EGL entrypoints. Typically, _eglInitDriverFallbacks() +can be used to plug in default/fallback functions. Some functions like driver->API.Initialize and driver->API.Terminate _must_ be implemented with driver-specific code (no default/fallback function is possible). diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index 9d77cb6e97b..34a90ae5dc5 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -54,12 +54,8 @@ _eglGetDriver(void) { mtx_lock(&_eglModuleMutex); - if (!_eglDriver) { - _eglDriver = calloc(1, sizeof(*_eglDriver)); - if (!_eglDriver) - return NULL; - _eglInitDriver(_eglDriver); - } + if (!_eglDriver) + _eglDriver = _eglBuiltInDriver(); mtx_unlock(&_eglModuleMutex); diff --git a/src/egl/main/egldriver.h b/src/egl/main/egldriver.h index ba12a060cab..6ab667c4e69 100644 --- a/src/egl/main/egldriver.h +++ b/src/egl/main/egldriver.h @@ -81,8 +81,8 @@ struct _egl_driver }; -extern void -_eglInitDriver(_EGLDriver *driver); +extern _EGLDriver* +_eglBuiltInDriver(void); extern _EGLDriver * |