mirror of
https://github.com/brl/mutter.git
synced 2024-12-25 04:22:05 +00:00
cogl-texture-2d: Fix checking for the EGL winsys
CoglTexture2D had an assert to verify that the EGL winsys was being used. This doesn't make any sense any more because the EGL winsys can't be used directly but instead it is just a base winsys for the platform winsys's. To fix this this patch adds a set of 'criteria' flags to each winsys, one of which is 'uses EGL'. CoglTexture2D can use this to determine if the winsys is supported. Eventually we might want to expose these flags publically so that an application can select a winsys based on certain conditions. For example, an application may need a winsys that uses X or EGL but doesn't care exactly which one it is. Reviewed-by: Robert Bragg <robert@linux.intel.com>
This commit is contained in:
parent
9000f8330d
commit
616d27f169
@ -460,9 +460,9 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
|
|||||||
CoglTexture2D *tex_2d;
|
CoglTexture2D *tex_2d;
|
||||||
GLenum gl_error;
|
GLenum gl_error;
|
||||||
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx) ==
|
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx)->criteria &
|
||||||
_cogl_winsys_egl_get_vtable (),
|
COGL_WINSYS_CRITERIA_USES_EGL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (ctx->private_feature_flags &
|
_COGL_RETURN_VAL_IF_FAIL (ctx->private_feature_flags &
|
||||||
COGL_PRIVATE_FEATURE_TEXTURE_2D_FROM_EGL_IMAGE,
|
COGL_PRIVATE_FEATURE_TEXTURE_2D_FROM_EGL_IMAGE,
|
||||||
@ -547,8 +547,8 @@ cogl_wayland_texture_2d_new_from_buffer (CoglContext *ctx,
|
|||||||
{
|
{
|
||||||
EGLImageKHR image;
|
EGLImageKHR image;
|
||||||
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx) ==
|
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx)->criteria &
|
||||||
_cogl_winsys_egl_get_vtable (),
|
COGL_WINSYS_CRITERIA_USES_EGL,
|
||||||
NULL);
|
NULL);
|
||||||
image = _cogl_egl_create_image (ctx,
|
image = _cogl_egl_create_image (ctx,
|
||||||
EGL_WAYLAND_BUFFER_WL,
|
EGL_WAYLAND_BUFFER_WL,
|
||||||
|
@ -696,6 +696,8 @@ _cogl_winsys_egl_xlib_get_vtable (void)
|
|||||||
|
|
||||||
vtable.id = COGL_WINSYS_ID_EGL_XLIB;
|
vtable.id = COGL_WINSYS_ID_EGL_XLIB;
|
||||||
vtable.name = "EGL_XLIB";
|
vtable.name = "EGL_XLIB";
|
||||||
|
vtable.criteria |= (COGL_WINSYS_CRITERIA_USES_X11 |
|
||||||
|
COGL_WINSYS_CRITERIA_USES_XLIB);
|
||||||
|
|
||||||
vtable.renderer_connect = _cogl_winsys_renderer_connect;
|
vtable.renderer_connect = _cogl_winsys_renderer_connect;
|
||||||
vtable.renderer_disconnect = _cogl_winsys_renderer_disconnect;
|
vtable.renderer_disconnect = _cogl_winsys_renderer_disconnect;
|
||||||
|
@ -640,6 +640,8 @@ _cogl_winsys_context_egl_get_egl_display (CoglContext *context)
|
|||||||
|
|
||||||
static CoglWinsysVtable _cogl_winsys_vtable =
|
static CoglWinsysVtable _cogl_winsys_vtable =
|
||||||
{
|
{
|
||||||
|
.criteria = COGL_WINSYS_CRITERIA_USES_EGL,
|
||||||
|
|
||||||
/* This winsys is only used as a base for the EGL-platform
|
/* This winsys is only used as a base for the EGL-platform
|
||||||
winsys's so it does not have an ID or a name */
|
winsys's so it does not have an ID or a name */
|
||||||
|
|
||||||
|
@ -2056,6 +2056,9 @@ static CoglWinsysVtable _cogl_winsys_vtable =
|
|||||||
{
|
{
|
||||||
.id = COGL_WINSYS_ID_GLX,
|
.id = COGL_WINSYS_ID_GLX,
|
||||||
.name = "GLX",
|
.name = "GLX",
|
||||||
|
.criteria = (COGL_WINSYS_CRITERIA_USES_X11 |
|
||||||
|
COGL_WINSYS_CRITERIA_USES_XLIB),
|
||||||
|
|
||||||
.renderer_get_proc_address = _cogl_winsys_renderer_get_proc_address,
|
.renderer_get_proc_address = _cogl_winsys_renderer_get_proc_address,
|
||||||
.renderer_connect = _cogl_winsys_renderer_connect,
|
.renderer_connect = _cogl_winsys_renderer_connect,
|
||||||
.renderer_disconnect = _cogl_winsys_renderer_disconnect,
|
.renderer_disconnect = _cogl_winsys_renderer_disconnect,
|
||||||
|
@ -54,9 +54,23 @@ typedef enum
|
|||||||
COGL_WINSYS_RECTANGLE_STATE_ENABLE
|
COGL_WINSYS_RECTANGLE_STATE_ENABLE
|
||||||
} CoglWinsysRectangleState;
|
} CoglWinsysRectangleState;
|
||||||
|
|
||||||
|
/* These criteria flags are hard-coded features of the winsys
|
||||||
|
regardless of the underlying driver or GPU. We might eventually
|
||||||
|
want to use these in a mechanism for the application to specify
|
||||||
|
criteria for the winsys instead of a specific winsys but for now
|
||||||
|
they are only used internally to assert that an EGL winsys is
|
||||||
|
selected */
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
COGL_WINSYS_CRITERIA_USES_X11 = (1 << 0),
|
||||||
|
COGL_WINSYS_CRITERIA_USES_XLIB = (1 << 1),
|
||||||
|
COGL_WINSYS_CRITERIA_USES_EGL = (1 << 2)
|
||||||
|
} CoglWinsysCriteria;
|
||||||
|
|
||||||
typedef struct _CoglWinsysVtable
|
typedef struct _CoglWinsysVtable
|
||||||
{
|
{
|
||||||
CoglWinsysID id;
|
CoglWinsysID id;
|
||||||
|
CoglWinsysCriteria criteria;
|
||||||
|
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user