static void gfx_ctx_vivante_get_video_size(void *data, unsigned *width, unsigned *height) { vivante_ctx_data_t *viv = (vivante_ctx_data_t*)data; #ifdef HAVE_EGL egl_get_video_size(&viv->egl, width, height); #endif }
static void gfx_ctx_qnx_get_video_size(void *data, unsigned *width, unsigned *height) { qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data; #ifdef HAVE_EGL egl_get_video_size(&qnx->egl, width, height); #endif }
static void android_gfx_ctx_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width = 0; unsigned new_height = 0; android_ctx_data_t *and = (android_ctx_data_t*)data; *quit = false; switch (android_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: #ifdef HAVE_EGL egl_get_video_size(&and->egl, &new_width, &new_height); #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN /* Swapchains are recreated in set_resize as a * central place, so use that to trigger swapchain reinit. */ *resize = and->vk.need_new_swapchain; new_width = and->width; new_height = and->height; #endif break; case GFX_CTX_NONE: default: break; } if (new_width != *width || new_height != *height) { RARCH_LOG("[Android]: Resizing (%u x %u) -> (%u x %u).\n", *width, *height, new_width, new_height); *width = new_width; *height = new_height; *resize = true; } /* Check if we are exiting. */ if (is_shutdown) *quit = true; }
static void gfx_ctx_opendingux_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width, new_height; opendingux_ctx_data_t *viv = (opendingux_ctx_data_t*)data; #ifdef HAVE_EGL egl_get_video_size(&viv->egl, &new_width, &new_height); #endif if (new_width != *width || new_height != *height) { *width = new_width; *height = new_height; *resize = true; } *quit = (bool)frontend_driver_get_signal_handler_state(); }
static void gfx_ctx_qnx_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, unsigned frame_count) { unsigned new_width, new_height; (void)data; (void)frame_count; *quit = false; egl_get_video_size(data, &new_width, &new_height); if (new_width != *width || new_height != *height) { *width = new_width; *height = new_height; *resize = true; } /* Check if we are exiting. */ if (runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL)) *quit = true; }
static void android_gfx_ctx_get_video_size(void *data, unsigned *width, unsigned *height) { android_ctx_data_t *and = (android_ctx_data_t*)data; switch (android_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: #ifdef HAVE_EGL egl_get_video_size(&and->egl, width, height); #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN *width = and->width; *height = and->height; #endif break; case GFX_CTX_NONE: default: break; } }
static void gfx_ctx_qnx_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width, new_height; qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data; *quit = false; #ifdef HAVE_EGL egl_get_video_size(&qnx->egl, &new_width, &new_height); #endif if (new_width != *width || new_height != *height) { *width = new_width; *height = new_height; *resize = true; } /* Check if we are exiting. */ if (is_shutdown) *quit = true; }
static void *gfx_ctx_emscripten_init(void *video_driver) { #ifdef HAVE_EGL unsigned width, height; EGLint major, minor; EGLint n; static const EGLint attribute_list[] = { EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_NONE }; static const EGLint context_attributes[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; #endif emscripten_ctx_data_t *emscripten = (emscripten_ctx_data_t*) calloc(1, sizeof(*emscripten)); if (!emscripten) return NULL; (void)video_driver; #ifdef HAVE_EGL if (g_egl_inited) { RARCH_LOG("[EMSCRIPTEN/EGL]: Attempted to re-initialize driver.\n"); return (void*)"emscripten"; } if (!egl_init_context(&emscripten->egl, EGL_DEFAULT_DISPLAY, &major, &minor, &n, attribute_list)) { egl_report_error(); goto error; } if (!egl_create_context(&emscripten->egl, context_attributes)) { egl_report_error(); goto error; } if (!egl_create_surface(&emscripten->egl, 0)) goto error; egl_get_video_size(&emscripten->egl, &width, &height); emscripten->fb_width = width; emscripten->fb_height = height; RARCH_LOG("[EMSCRIPTEN/EGL]: Dimensions: %ux%u\n", width, height); #endif return emscripten; error: gfx_ctx_emscripten_destroy(video_driver); return NULL; }