gl-renderer: Move get_platform_display to EGL client setup
This is to put more of the EGL client extension handling in the same place. This also adds a boolean to check if EGL_EXT_platform_base is supported, similar to other extensions we check. Signed-off-by: Scott Anderson <scott.anderson@collabora.com>
This commit is contained in:
@@ -466,12 +466,16 @@ gl_renderer_setup_egl_client_extensions(struct gl_renderer *gr)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (weston_check_egl_extension(extensions, "EGL_EXT_platform_base"))
|
if (weston_check_egl_extension(extensions, "EGL_EXT_platform_base")) {
|
||||||
|
gr->get_platform_display =
|
||||||
|
(void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
|
||||||
gr->create_platform_window =
|
gr->create_platform_window =
|
||||||
(void *) eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
|
(void *) eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
|
||||||
else
|
gr->has_platform_base = true;
|
||||||
|
} else {
|
||||||
weston_log("warning: EGL_EXT_platform_base not supported.\n");
|
weston_log("warning: EGL_EXT_platform_base not supported.\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
|
gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
|
||||||
|
|||||||
@@ -63,7 +63,10 @@ struct gl_renderer {
|
|||||||
PFNEGLCREATEIMAGEKHRPROC create_image;
|
PFNEGLCREATEIMAGEKHRPROC create_image;
|
||||||
PFNEGLDESTROYIMAGEKHRPROC destroy_image;
|
PFNEGLDESTROYIMAGEKHRPROC destroy_image;
|
||||||
PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC swap_buffers_with_damage;
|
PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC swap_buffers_with_damage;
|
||||||
|
|
||||||
|
PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display;
|
||||||
PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window;
|
PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window;
|
||||||
|
bool has_platform_base;
|
||||||
|
|
||||||
bool has_unpack_subimage;
|
bool has_unpack_subimage;
|
||||||
|
|
||||||
|
|||||||
@@ -209,8 +209,6 @@ struct timeline_render_point {
|
|||||||
struct wl_event_source *event_source;
|
struct wl_event_source *event_source;
|
||||||
};
|
};
|
||||||
|
|
||||||
static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
|
|
||||||
|
|
||||||
static inline const char *
|
static inline const char *
|
||||||
dump_format(uint32_t format, char out[4])
|
dump_format(uint32_t format, char out[4])
|
||||||
{
|
{
|
||||||
@@ -3495,22 +3493,10 @@ gl_renderer_display_create(struct weston_compositor *ec,
|
|||||||
gr->egl_display = NULL;
|
gr->egl_display = NULL;
|
||||||
|
|
||||||
/* extension_suffix is supported */
|
/* extension_suffix is supported */
|
||||||
if (supports) {
|
if (gr->has_platform_base && supports)
|
||||||
if (!get_platform_display) {
|
gr->egl_display = gr->get_platform_display(platform,
|
||||||
get_platform_display = (void *) eglGetProcAddress(
|
|
||||||
"eglGetPlatformDisplayEXT");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* also wrap this in the supports check because
|
|
||||||
* eglGetProcAddress can return non-NULL and still not
|
|
||||||
* support the feature at runtime, so ensure the
|
|
||||||
* appropriate extension checks have been done. */
|
|
||||||
if (get_platform_display && platform) {
|
|
||||||
gr->egl_display = get_platform_display(platform,
|
|
||||||
native_display,
|
native_display,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gr->egl_display) {
|
if (!gr->egl_display) {
|
||||||
weston_log("warning: either no EGL_EXT_platform_base "
|
weston_log("warning: either no EGL_EXT_platform_base "
|
||||||
@@ -3519,7 +3505,7 @@ gl_renderer_display_create(struct weston_compositor *ec,
|
|||||||
gr->egl_display = eglGetDisplay(native_display);
|
gr->egl_display = eglGetDisplay(native_display);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gr->egl_display == EGL_NO_DISPLAY) {
|
if (!gr->egl_display) {
|
||||||
weston_log("failed to create display\n");
|
weston_log("failed to create display\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user