static void gfx_ctx_wl_swap_buffers(void *data, void *data2) { gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; switch (wl_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: case GFX_CTX_OPENVG_API: #ifdef HAVE_EGL egl_swap_buffers(&wl->egl); #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN vulkan_present(&wl->vk, wl->vk.context.current_swapchain_index); vulkan_acquire_next_image(&wl->vk); flush_wayland_fd(&wl->input); #endif break; case GFX_CTX_NONE: default: break; } }
static void gfx_ctx_x_swap_buffers(void *data) { gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; switch (x_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: #ifdef HAVE_OPENGL if (x->g_is_double) glXSwapBuffers(g_x11_dpy, x->g_glx_win); #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN vulkan_present(&x->vk, x->vk.context.current_swapchain_index); vulkan_acquire_next_image(&x->vk); #endif break; case GFX_CTX_NONE: default: break; } }
static void gfx_ctx_x_swap_buffers(void *data, void *data2) { gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; switch (x_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: #if defined(HAVE_OPENGL) if (x->swap_mode) { if (x->g_interval) { glXWaitForMscOML(g_x11_dpy, x->g_glx_win, x->msc + x->g_interval, 0, 0, &x->ust, &x->msc, &x->sbc); glXSwapBuffersMscOML(g_x11_dpy, x->g_glx_win, 0, 0, 0); } else glXSwapBuffersMscOML(g_x11_dpy, x->g_glx_win, 0, x->divisor, x->remainder); #if 0 RARCH_LOG("UST: %d, MSC: %d, SBC: %d\n", x->ust, x->msc, x->sbc); #endif } else { if (x->g_is_double) glXSwapBuffers(g_x11_dpy, x->g_glx_win); } #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN vulkan_present(&x->vk, x->vk.context.current_swapchain_index); vulkan_acquire_next_image(&x->vk); #endif break; case GFX_CTX_NONE: default: break; } }
static void gfx_ctx_wgl_swap_buffers(void *data, void *data2) { (void)data; switch (win32_api) { case GFX_CTX_OPENGL_API: SwapBuffers(win32_hdc); break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN vulkan_present(&win32_vk, win32_vk.context.current_swapchain_index); vulkan_acquire_next_image(&win32_vk); #endif break; case GFX_CTX_NONE: default: break; } }
static void android_gfx_ctx_swap_buffers(void *data, void *data2) { android_ctx_data_t *and = (android_ctx_data_t*)data; switch (android_api) { case GFX_CTX_OPENGL_API: case GFX_CTX_OPENGL_ES_API: case GFX_CTX_OPENVG_API: #ifdef HAVE_EGL egl_swap_buffers(&and->egl); #endif break; case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN vulkan_present(&and->vk, and->vk.context.current_swapchain_index); vulkan_acquire_next_image(&and->vk); #endif break; case GFX_CTX_NONE: default: break; } }
static void gfx_ctx_khr_display_swap_buffers(void *data) { khr_display_ctx_data_t *khr = (khr_display_ctx_data_t*)data; vulkan_present(&khr->vk, khr->vk.context.current_swapchain_index); vulkan_acquire_next_image(&khr->vk); }