On 08/08/2016 10:20 AM, Rob Clark wrote: > how strict are we on that actually? I think whenever we add new gl > entry points (ie. implementing new extension, etc) we kinda sorta > break ABI, don't we? I thought mixing/matching libGL vs *_dri.so was > at least not recommended..
No... we go to great lengths to make *_dri.so query libGL to know where a new function goes in the dispatch table. If libGL doesn't know a location for the new function, it dynamically assigns one. That's what all the remap table stuff is. > BR, > -R > > On Mon, Aug 8, 2016 at 12:22 PM, Ian Romanick <i...@freedesktop.org> wrote: >> I'm pretty sure this breaks ABI. Did you try using an unpatched libGL >> with a patched *_dri.so (and vice-versa)? >> >> On 08/01/2016 06:21 AM, Jan Ziak wrote: >>> Signed-off-by: Jan Ziak (http://atom-symbol.net) <0xe2.0x9a.0...@gmail.com> >>> --- >>> src/egl/drivers/dri2/egl_dri2.h | 19 ++++++++++--------- >>> src/gallium/auxiliary/vl/vl_winsys_dri3.c | 3 ++- >>> src/glx/dri3_priv.h | 5 +++-- >>> src/loader/loader.c | 7 ++++--- >>> src/loader/loader.h | 4 +++- >>> 5 files changed, 22 insertions(+), 16 deletions(-) >>> >>> diff --git a/src/egl/drivers/dri2/egl_dri2.h >>> b/src/egl/drivers/dri2/egl_dri2.h >>> index 4577875..e406443 100644 >>> --- a/src/egl/drivers/dri2/egl_dri2.h >>> +++ b/src/egl/drivers/dri2/egl_dri2.h >>> @@ -28,6 +28,7 @@ >>> #ifndef EGL_DRI2_INCLUDED >>> #define EGL_DRI2_INCLUDED >>> >>> +#include <stdbool.h> >>> #include <stdint.h> >>> >>> #ifdef HAVE_X11_PLATFORM >>> @@ -160,7 +161,7 @@ struct dri2_egl_display >>> int dri2_major; >>> int dri2_minor; >>> __DRIscreen *dri_screen; >>> - int own_dri_screen; >>> + bool own_dri_screen; >>> const __DRIconfig **driver_configs; >>> void *driver; >>> const __DRIcoreExtension *core; >>> @@ -181,8 +182,8 @@ struct dri2_egl_display >>> * dri2_make_current (tracks if there are active contexts/surfaces). */ >>> int ref_count; >>> >>> - int own_device; >>> - int invalidate_available; >>> + bool own_device; >>> + bool invalidate_available; >>> int min_swap_interval; >>> int max_swap_interval; >>> int default_swap_interval; >>> @@ -201,7 +202,7 @@ struct dri2_egl_display >>> #ifdef HAVE_X11_PLATFORM >>> xcb_connection_t *conn; >>> int screen; >>> - int swap_available; >>> + bool swap_available; >>> #ifdef HAVE_DRI3 >>> struct loader_dri3_extensions loader_dri3_ext; >>> #endif >>> @@ -214,13 +215,13 @@ struct dri2_egl_display >>> struct wl_drm *wl_drm; >>> struct wl_shm *wl_shm; >>> struct wl_event_queue *wl_queue; >>> - int authenticated; >>> + bool authenticated; >>> int formats; >>> uint32_t capabilities; >>> #endif >>> >>> - int is_render_node; >>> - int is_different_gpu; >>> + bool is_render_node; >>> + bool is_different_gpu; >>> }; >>> >>> struct dri2_egl_context >>> @@ -244,7 +245,7 @@ struct dri2_egl_surface >>> __DRIdrawable *dri_drawable; >>> __DRIbuffer buffers[5]; >>> int buffer_count; >>> - int have_fake_front; >>> + bool have_fake_front; >>> >>> #ifdef HAVE_X11_PLATFORM >>> xcb_drawable_t drawable; >>> @@ -282,7 +283,7 @@ struct dri2_egl_surface >>> #ifdef HAVE_DRM_PLATFORM >>> struct gbm_bo *bo; >>> #endif >>> - int locked; >>> + bool locked; >>> int age; >>> } color_buffers[4], *back, *current; >>> #endif >>> diff --git a/src/gallium/auxiliary/vl/vl_winsys_dri3.c >>> b/src/gallium/auxiliary/vl/vl_winsys_dri3.c >>> index 493e645..7cb6c18 100644 >>> --- a/src/gallium/auxiliary/vl/vl_winsys_dri3.c >>> +++ b/src/gallium/auxiliary/vl/vl_winsys_dri3.c >>> @@ -25,6 +25,7 @@ >>> * >>> >>> **************************************************************************/ >>> >>> +#include <stdbool.h> >>> #include <fcntl.h> >>> >>> #include <X11/Xlib-xcb.h> >>> @@ -627,7 +628,7 @@ vl_dri3_screen_create(Display *display, int screen) >>> xcb_dri3_open_reply_t *open_reply; >>> xcb_get_geometry_cookie_t geom_cookie; >>> xcb_get_geometry_reply_t *geom_reply; >>> - int is_different_gpu; >>> + bool is_different_gpu; >>> int fd; >>> >>> assert(display); >>> diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h >>> index 0822377..bfb0786 100644 >>> --- a/src/glx/dri3_priv.h >>> +++ b/src/glx/dri3_priv.h >>> @@ -54,6 +54,7 @@ >>> * Kristian Høgsberg (k...@redhat.com) >>> */ >>> >>> +#include <stdbool.h> >>> #include <xcb/xcb.h> >>> #include <xcb/dri3.h> >>> #include <xcb/present.h> >>> @@ -78,7 +79,7 @@ struct dri3_display >>> int dri3Minor; >>> >>> /* Present bits */ >>> - int hasPresent; >>> + bool hasPresent; >>> int presentMajor; >>> int presentMinor; >>> }; >>> @@ -101,7 +102,7 @@ struct dri3_screen { >>> >>> void *driver; >>> int fd; >>> - int is_different_gpu; >>> + bool is_different_gpu; >>> >>> int show_fps_interval; >>> >>> diff --git a/src/loader/loader.c b/src/loader/loader.c >>> index 56ffc5d..a3b75c7 100644 >>> --- a/src/loader/loader.c >>> +++ b/src/loader/loader.c >>> @@ -356,7 +356,7 @@ DRI_CONF_BEGIN >>> DRI_CONF_END; >>> #endif >>> >>> -int loader_get_user_preferred_fd(int default_fd, int *different_device) >>> +int loader_get_user_preferred_fd(int default_fd, bool *different_device) >>> { >>> struct udev *udev; >>> #ifdef USE_DRICONF >>> @@ -365,7 +365,8 @@ int loader_get_user_preferred_fd(int default_fd, int >>> *different_device) >>> #endif >>> const char *dri_prime = getenv("DRI_PRIME"); >>> char *prime = NULL; >>> - int is_different_device = 0, fd = default_fd; >>> + bool is_different_device = 0; >>> + int fd = default_fd; >>> char *default_device_id_path_tag; >>> char *device_name = NULL; >>> char another_tag = 0; >>> @@ -441,7 +442,7 @@ int loader_get_user_preferred_fd(int default_fd, int >>> *different_device) >>> return fd; >>> } >>> #else >>> -int loader_get_user_preferred_fd(int default_fd, int *different_device) >>> +int loader_get_user_preferred_fd(int default_fd, bool *different_device) >>> { >>> *different_device = 0; >>> return default_fd; >>> diff --git a/src/loader/loader.h b/src/loader/loader.h >>> index 055dc78..cead7a3 100644 >>> --- a/src/loader/loader.h >>> +++ b/src/loader/loader.h >>> @@ -27,6 +27,8 @@ >>> #ifndef LOADER_H >>> #define LOADER_H >>> >>> +#include <stdbool.h> >>> + >>> #ifdef __cplusplus >>> extern "C" { >>> #endif >>> @@ -54,7 +56,7 @@ loader_get_device_name_for_fd(int fd); >>> */ >>> >>> int >>> -loader_get_user_preferred_fd(int default_fd, int *different_device); >>> +loader_get_user_preferred_fd(int default_fd, bool *different_device); >>> >>> /* for logging.. keep this aligned with egllog.h so we can just use >>> * _eglLog directly. >>> _______________________________________________ >>> mesa-dev mailing list >>> mesa-dev@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev >>> >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev