diff options
author | Emma Anholt <emma@anholt.net> | 2022-11-28 12:50:59 -0800 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-12-05 19:26:41 +0000 |
commit | 1026d29344192755dd340d6ac13a9674189d2d61 (patch) | |
tree | 3fc33d24b56fba2676cbc639e99b2acea50ea677 /src/loader | |
parent | 2db044d7e53d960c2d7286d0b8899ba455254475 (diff) | |
download | mesa-1026d29344192755dd340d6ac13a9674189d2d61.tar.gz |
dri: Introduce internal Mesa DRI driver loader extension.
All DRI loaders in Mesa (EGL, GLX, gbm) now require this ext and that the
driver come from a matching build. This will let us use Mesa-internal
types and enums across the loader-driver bounary inside of Mesa.
Reviewed-by: Adam Jackson <ajax@redhat.com>
Acked-by: Eric Engestrom <eric@igalia.com>
LOL-YESed-by: Kristian Høgsberg <krh@bitplanet.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20069>
Diffstat (limited to 'src/loader')
-rw-r--r-- | src/loader/loader.c | 14 | ||||
-rw-r--r-- | src/loader/meson.build | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/loader/loader.c b/src/loader/loader.c index 5e27f84f51a..dd6f837911a 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -46,9 +46,11 @@ #endif #include <GL/gl.h> #include <GL/internal/dri_interface.h> +#include <GL/internal/mesa_interface.h> #include "loader.h" #include "util/os_file.h" #include "util/os_misc.h" +#include "git_sha1.h" #ifdef HAVE_LIBDRM #include <xf86drm.h> @@ -627,6 +629,18 @@ loader_bind_extensions(void *data, if (!match->optional) ret = false; } + + /* The loaders rely on the loaded DRI drivers being from the same Mesa + * build so that we can reference the same structs on both sides. + */ + if (strcmp(match->name, __DRI_MESA) == 0) { + const __DRImesaCoreExtension *mesa = (const __DRImesaCoreExtension *)*field; + if (strcmp(mesa->version_string, MESA_INTERFACE_VERSION_STRING) != 0) { + log_(_LOADER_FATAL, "DRI driver not from this Mesa build ('%s' vs '%s')\n", + mesa->version_string, MESA_INTERFACE_VERSION_STRING); + ret = false; + } + } } return ret; diff --git a/src/loader/meson.build b/src/loader/meson.build index 6334cb9815c..bdebcb725a4 100644 --- a/src/loader/meson.build +++ b/src/loader/meson.build @@ -42,7 +42,7 @@ loader_c_args = [ ] libloader = static_library( 'loader', - ['loader_dri_helper.c', 'loader.c'], + ['loader_dri_helper.c', 'loader.c', sha1_h], c_args : loader_c_args, gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_util], |