summaryrefslogtreecommitdiffstats
path: root/src/egl/main
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2017-10-18 20:23:00 +0200
committerMarek Olšák <[email protected]>2017-10-18 20:23:42 +0200
commit84f3afc2e122cb418573f1e9c61716520f9859c1 (patch)
treefd8f3bbc2b7f5eeb905a5699cf0f5bdec59f95d0 /src/egl/main
parent2cb9ab53dd3ae6850a2611b01695f7449d24614d (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.txt9
-rw-r--r--src/egl/main/egldriver.c8
-rw-r--r--src/egl/main/egldriver.h4
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 *