Hi Chad, I broke up the patches and sent them as a separate patch series a few days ago.
[PATCH 1/3] egl: import egl.h from registry (v2) [PATCH 2/3] egl: import eglext.h from registry and cleanup eglmesaext.h (v2) [PATCH 3/3] egl: import platform headers from registry (v2) Marek On Wed, May 27, 2015 at 8:20 PM, Chad Versace <chad.vers...@intel.com> wrote: > On Thu 14 May 2015, Emil Velikov wrote: >> Hi Marek, >> On 12/05/15 22:54, Marek Olšák wrote: >> > From: Marek Olšák <marek.ol...@amd.com> >> > >> > with the extension of keeping: >> > #define KHRONOS_APICALL __attribute__((visibility("default"))) >> > >> > And don't include mesa headers in egl.h. >> Can we do this more gradually (like below). It will ease the conflicts >> that this patch might cause. >> >> - egl.h - should have no side effects >> - eglext.h and eglmesaext.h - will clearly illustrate the parts that >> have been moved from the latter to the former. >> - eglplatform.h and khrplatform.h - there are a few controversial >> changes which might cause breakage. > > I want to see this patch broken up too. Currently, the patch contains > a straightforward header update layered on top of Marek's header > modifications. The two should be split into separate patches so it's > clear which changes are which. > >> > --- >> > include/EGL/egl.h | 562 >> > +++++++++++++++++++++------------------------ >> > include/EGL/eglext.h | 259 +++++++++++++++++++-- >> > include/EGL/eglplatform.h | 45 +--- >> > include/KHR/khrplatform.h | 25 +- >> > src/egl/main/egltypedefs.h | 2 + >> > 5 files changed, 540 insertions(+), 353 deletions(-) >> > >> >> > diff --git a/include/EGL/eglplatform.h b/include/EGL/eglplatform.h >> > index 2eb6865..1284089 100644 >> > --- a/include/EGL/eglplatform.h >> > +++ b/include/EGL/eglplatform.h >> >> > -#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ >> > +#elif defined(__APPLE__) || defined(__WINSCW__) || defined(__SYMBIAN32__) >> > /* Symbian */ >> > >> > typedef int EGLNativeDisplayType; >> > typedef void *EGLNativeWindowType; >> > typedef void *EGLNativePixmapType; >> > >> > -#elif defined(WL_EGL_PLATFORM) >> > +#elif defined(__ANDROID__) || defined(ANDROID) >> > >> > -typedef struct wl_display *EGLNativeDisplayType; >> > -typedef struct wl_egl_pixmap *EGLNativePixmapType; >> > -typedef struct wl_egl_window *EGLNativeWindowType; >> > +#include <android/native_window.h> >> > >> > -#elif defined(__GBM__) >> > - >> > -typedef struct gbm_device *EGLNativeDisplayType; >> > -typedef struct gbm_bo *EGLNativePixmapType; >> > -typedef void *EGLNativeWindowType; >> > - >> > -#elif defined(ANDROID) /* Android */ >> > - >> > -struct ANativeWindow; >> > struct egl_native_pixmap_t; >> > >> > -typedef struct ANativeWindow *EGLNativeWindowType; >> > -typedef struct egl_native_pixmap_t *EGLNativePixmapType; >> > -typedef void *EGLNativeDisplayType; >> > +typedef struct ANativeWindow* EGLNativeWindowType; >> > +typedef struct egl_native_pixmap_t* EGLNativePixmapType; >> > +typedef void* EGLNativeDisplayType; >> > >> > #elif defined(__unix__) >> > >> > -#if defined(MESA_EGL_NO_X11_HEADERS) >> > - >> > -typedef void *EGLNativeDisplayType; >> > -typedef khronos_uintptr_t EGLNativePixmapType; >> > -typedef khronos_uintptr_t EGLNativeWindowType; >> > - >> > -#else >> > - >> > /* X11 (tentative) */ >> > #include <X11/Xlib.h> >> > #include <X11/Xutil.h> >> > @@ -122,18 +103,8 @@ typedef Display *EGLNativeDisplayType; >> > typedef Pixmap EGLNativePixmapType; >> > typedef Window EGLNativeWindowType; >> > >> > -#endif /* MESA_EGL_NO_X11_HEADERS */ >> > - >> > -#elif __HAIKU__ >> > -#include <kernel/image.h> >> > -typedef void *EGLNativeDisplayType; >> > -typedef khronos_uintptr_t EGLNativePixmapType; >> > -typedef khronos_uintptr_t EGLNativeWindowType; >> > - >> Upon closer look, one could get away with the above changes, although >> there may be something more subtle to it. >> >> Kristian, Chad, >> >> Would you have any suggestions for/against nuking the Wayland/GBM/other >> typedefs ? With an extra eye on the Haiku changes, what would it take to >> get the current eglplatform.h (or equivalent) accepted with Khronos ? > > I'm against. Khronos intended eglplatform.h specifically for this > purpose. To quote the Khronos API Implementer's Guide: > > Implementers may need to modify eglplatform.h. In particular the > eglNativeDisplayType, eglNativeWindowType, and eglNativePixmapType > typedefs must be defined as appropriate for the platform (typically, > they will be typedef'ed to corresponding types in the native window > system). Developer documentation should mention the correspondence so > that developers know what parameters to pass to eglCreateWindowSurface, > eglCreatePixmapSurface, and eglCopyBuffers. Documentation should also > describe the format of the display_id parameter to eglGetDisplay, since > this is a platform-specific identifier. > > [https://www.khronos.org/registry/implementers_guide.html] > > And the EGL 1.5 spec says this about eglplatform.h: > > All platform-specific types, values, and macros used in egl.h are > partitioned into a platform header, eglplatform.h, which is > automatically included by egl.h. [...] Implementers should need to > modify only eglplatform.h, never egl.h 2 . > > Therefore eglplatform.h should keep the typedefs for Wayland, GBM, > Haiku, and Android. The specs say the vendor should provide the > typedefs, and other projects are already relying on them. The header > needs to keep MESA_EGL_NO_X11_HEADERS block too, because that block was > added specifically to fix compilation on Linux systems that lacked X11. > >> > diff --git a/include/KHR/khrplatform.h b/include/KHR/khrplatform.h >> > index 4479539..faa0ed7 100644 >> > --- a/include/KHR/khrplatform.h >> > +++ b/include/KHR/khrplatform.h >> >> > #if defined(_WIN32) && !defined(__SCITECH_SNAP__) >> > -# if defined(KHRONOS_DLL_EXPORTS) >> > -# define KHRONOS_APICALL __declspec(dllexport) >> > -# else >> > -# define KHRONOS_APICALL __declspec(dllimport) >> > -# endif >> > +# define KHRONOS_APICALL __declspec(dllimport) >> This might cause a problem with our Windows/SCons build. On the surface >> it seems to rely on KHRONOS_DLL_EXPORTS. Although we do have module >> definition files, which set the correct symbols as external. >> >> Perhaps Jose/Brian might be able to confirm if things are good or go >> pear-shaped ? >> >> >> > diff --git a/src/egl/main/egltypedefs.h b/src/egl/main/egltypedefs.h >> > index e90959a..2430033 100644 >> > --- a/src/egl/main/egltypedefs.h >> > +++ b/src/egl/main/egltypedefs.h >> > @@ -35,6 +35,8 @@ >> > >> > #include <EGL/egl.h> >> > #include <EGL/eglext.h> >> > +#include <EGL/eglextchromium.h> >> > +#include <EGL/eglmesaext.h> >> > >> If my memory recalls correctly there was a discussion that >> additional/third party extension headers should be included from within >> eglext.h. Although I'm struggling to find the quote plus was never a fan >> of it. > >> This will require that we check all possible users of the remaining >> mesa/chromium extensions and update them :\ > > My interpretation of the Khronos API Implementer's Guide says otherwise: > > Functions and enumerants for unregistered implementer extensions should > be declared and defined in an implementer's own header file. > > But, from a pragmatic standpoint, I don't wish to break existing user's > builds over this small technicality. I prefer to continue including > eglext{vendor}.h from eglext.h unless there is a practical reason not > to. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev