diff --git a/gfx/drivers_context/android_ctx.c b/gfx/drivers_context/android_ctx.c index 27db8fd692..2bb0547f35 100644 --- a/gfx/drivers_context/android_ctx.c +++ b/gfx/drivers_context/android_ctx.c @@ -540,7 +540,7 @@ static void *android_gfx_ctx_get_context_data(void *data) static uint32_t android_gfx_ctx_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_android = { diff --git a/gfx/drivers_context/bbqnx_ctx.c b/gfx/drivers_context/bbqnx_ctx.c index 743f054d04..947df8e918 100644 --- a/gfx/drivers_context/bbqnx_ctx.c +++ b/gfx/drivers_context/bbqnx_ctx.c @@ -401,7 +401,7 @@ static void gfx_ctx_qnx_get_video_size(void *data, static uint32_t gfx_ctx_qnx_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_bbqnx = { diff --git a/gfx/drivers_context/cgl_ctx.c b/gfx/drivers_context/cgl_ctx.c index 5301f6ef3a..2d24b75fea 100644 --- a/gfx/drivers_context/cgl_ctx.c +++ b/gfx/drivers_context/cgl_ctx.c @@ -343,7 +343,7 @@ error: static uint32_t gfx_ctx_cgl_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_cgl = { diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m index bd79119abb..dde8ab6ee4 100644 --- a/gfx/drivers_context/cocoa_gl_ctx.m +++ b/gfx/drivers_context/cocoa_gl_ctx.m @@ -598,7 +598,7 @@ static void cocoagl_gfx_ctx_bind_hw_render(void *data, bool enable) static uint32_t cocoagl_gfx_ctx_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_cocoagl = { diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index a7feb1bf5b..58ec05682f 100644 --- a/gfx/drivers_context/d3d_ctx.cpp +++ b/gfx/drivers_context/d3d_ctx.cpp @@ -305,7 +305,7 @@ static bool gfx_ctx_d3d_get_metrics(void *data, static uint32_t gfx_ctx_d3d_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_d3d = { diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c index a279884591..dc662835bb 100644 --- a/gfx/drivers_context/drm_ctx.c +++ b/gfx/drivers_context/drm_ctx.c @@ -872,8 +872,10 @@ static void gfx_ctx_drm_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_drm_get_flags(void *data) { - (void)data; - return GFX_CTX_FLAGS_NONE; + gfx_ctx_drm_data_t *drm = (gfx_ctx_drm_data_t*)data; + if ((drm->egl.major * 1000 + drm->egl.minor) >= 3001) + return (1UL << GFX_CTX_FLAGS_GL_CORE_CONTEXT); + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_drm = { diff --git a/gfx/drivers_context/emscriptenegl_ctx.c b/gfx/drivers_context/emscriptenegl_ctx.c index 7b06bed330..80bd2d91cc 100644 --- a/gfx/drivers_context/emscriptenegl_ctx.c +++ b/gfx/drivers_context/emscriptenegl_ctx.c @@ -306,7 +306,7 @@ static void gfx_ctx_emscripten_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_emscripten_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_emscripten = { diff --git a/gfx/drivers_context/gfx_null_ctx.c b/gfx/drivers_context/gfx_null_ctx.c index ab2e24890a..055bd6b0ae 100644 --- a/gfx/drivers_context/gfx_null_ctx.c +++ b/gfx/drivers_context/gfx_null_ctx.c @@ -136,7 +136,7 @@ static void *gfx_ctx_null_init(void *video_driver) static uint32_t gfx_ctx_null_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_null = { diff --git a/gfx/drivers_context/mali_fbdev_ctx.c b/gfx/drivers_context/mali_fbdev_ctx.c index 01bec69607..ac47fb7893 100644 --- a/gfx/drivers_context/mali_fbdev_ctx.c +++ b/gfx/drivers_context/mali_fbdev_ctx.c @@ -294,7 +294,7 @@ static void gfx_ctx_mali_fbdev_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_mali_fbdev_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_mali_fbdev = { diff --git a/gfx/drivers_context/opendingux_fbdev_ctx.c b/gfx/drivers_context/opendingux_fbdev_ctx.c index e8d45bb06b..34ff6c09df 100644 --- a/gfx/drivers_context/opendingux_fbdev_ctx.c +++ b/gfx/drivers_context/opendingux_fbdev_ctx.c @@ -270,7 +270,7 @@ static void gfx_ctx_opendingux_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_opendingux_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_opendingux_fbdev = { diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c index a5cd8a2ff1..9b65b6d857 100644 --- a/gfx/drivers_context/ps3_ctx.c +++ b/gfx/drivers_context/ps3_ctx.c @@ -417,7 +417,7 @@ static void gfx_ctx_ps3_get_video_output_next(void *data) static uint32_t gfx_ctx_ps3_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_ps3 = { diff --git a/gfx/drivers_context/sdl_gl_ctx.c b/gfx/drivers_context/sdl_gl_ctx.c index 4755d4eefa..3ab6f5ada9 100644 --- a/gfx/drivers_context/sdl_gl_ctx.c +++ b/gfx/drivers_context/sdl_gl_ctx.c @@ -403,7 +403,7 @@ static void sdl_ctx_show_mouse(void *data, bool state) static uint32_t sdl_ctx_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_sdl_gl = diff --git a/gfx/drivers_context/vc_egl_ctx.c b/gfx/drivers_context/vc_egl_ctx.c index 193aef4f18..05d8bd83c1 100644 --- a/gfx/drivers_context/vc_egl_ctx.c +++ b/gfx/drivers_context/vc_egl_ctx.c @@ -627,7 +627,7 @@ static gfx_ctx_proc_t gfx_ctx_vc_get_proc_address(const char *symbol) static uint32_t gfx_ctx_vc_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_videocore = { diff --git a/gfx/drivers_context/vivante_fbdev_ctx.c b/gfx/drivers_context/vivante_fbdev_ctx.c index 3e60cf6876..5c6ac27acc 100644 --- a/gfx/drivers_context/vivante_fbdev_ctx.c +++ b/gfx/drivers_context/vivante_fbdev_ctx.c @@ -264,7 +264,7 @@ static void gfx_ctx_vivante_swap_buffers(void *data) static uint32_t gfx_ctx_vivante_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_vivante_fbdev = { diff --git a/gfx/drivers_context/wayland_ctx.c b/gfx/drivers_context/wayland_ctx.c index 8064548e4f..6efddac860 100644 --- a/gfx/drivers_context/wayland_ctx.c +++ b/gfx/drivers_context/wayland_ctx.c @@ -1140,8 +1140,10 @@ static void gfx_ctx_wl_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_wl_get_flags(void *data) { - (void)data; - return GFX_CTX_FLAGS_NONE; + gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; + if ((wl->egl.major * 1000 + wl->egl.minor) >= 3001) + return (1UL << GFX_CTX_FLAGS_GL_CORE_CONTEXT); + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_wayland = { diff --git a/gfx/drivers_context/wgl_ctx.cpp b/gfx/drivers_context/wgl_ctx.cpp index 1bb3c710f4..f5a5c20572 100644 --- a/gfx/drivers_context/wgl_ctx.cpp +++ b/gfx/drivers_context/wgl_ctx.cpp @@ -451,7 +451,9 @@ static void gfx_ctx_wgl_bind_hw_render(void *data, bool enable) static uint32_t gfx_ctx_wgl_get_flags(void *data) { (void)data; - return GFX_CTX_FLAGS_NONE; + if ((g_major * 1000 + g_minor) >= 3001) + return (1UL << GFX_CTX_FLAGS_GL_CORE_CONTEXT); + return (1UL << GFX_CTX_FLAGS_NONE); } const gfx_ctx_driver_t gfx_ctx_wgl = { diff --git a/gfx/drivers_context/x_ctx.c b/gfx/drivers_context/x_ctx.c index f9d3ebe1d0..ddca3f6bc7 100644 --- a/gfx/drivers_context/x_ctx.c +++ b/gfx/drivers_context/x_ctx.c @@ -888,8 +888,10 @@ static void *gfx_ctx_x_get_context_data(void *data) static uint32_t gfx_ctx_x_get_flags(void *data) { - (void)data; - return GFX_CTX_FLAGS_NONE; + gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; + if (x->g_core_es || x->g_core_es_core) + return (1UL << GFX_CTX_FLAGS_GL_CORE_CONTEXT); + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_x = { diff --git a/gfx/drivers_context/xegl_ctx.c b/gfx/drivers_context/xegl_ctx.c index 6268a074e8..bbe05755c3 100644 --- a/gfx/drivers_context/xegl_ctx.c +++ b/gfx/drivers_context/xegl_ctx.c @@ -576,8 +576,11 @@ static gfx_ctx_proc_t gfx_ctx_xegl_get_proc_address(const char *symbol) static uint32_t gfx_ctx_xegl_get_flags(void *data) { - (void)data; - return GFX_CTX_FLAGS_NONE; + xegl_ctx_data_t *xegl = (xegl_ctx_data_t*)data; + + if ((xegl->egl.major * 1000 + xegl->egl.minor) >= 3001) + return (1UL << GFX_CTX_FLAGS_GL_CORE_CONTEXT); + return 1UL << GFX_CTX_FLAGS_NONE; } const gfx_ctx_driver_t gfx_ctx_x_egl = diff --git a/gfx/video_context_driver.h b/gfx/video_context_driver.h index 5f5219f3a9..4cd0b13a13 100644 --- a/gfx/video_context_driver.h +++ b/gfx/video_context_driver.h @@ -55,7 +55,7 @@ enum display_metric_types enum display_flags { GFX_CTX_FLAGS_NONE = 0, - GFX_CTX_FLAGS_CORE_GL + GFX_CTX_FLAGS_GL_CORE_CONTEXT }; enum gfx_ctx_ctl_state