diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 8285221e41..e3c22404e1 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -23,6 +23,7 @@ #include "video_driver.h" +#include "../frontend/frontend_driver.h" #include "../ui/ui_companion_driver.h" #include "../list_special.h" #include "../retroarch.h" @@ -41,6 +42,181 @@ static gfx_api_gpu_map gpu_map[] = { { NULL, GFX_CTX_DIRECT3D12_API } }; +static void *video_null_init(const video_info_t *video, + input_driver_t **input, void **input_data) +{ + *input = NULL; + *input_data = NULL; + + frontend_driver_install_signal_handler(); + + return (void*)-1; +} + +static bool video_null_frame(void *data, const void *frame, + unsigned frame_width, unsigned frame_height, uint64_t frame_count, + unsigned pitch, const char *msg, video_frame_info_t *video_info) +{ + return true; +} + +static void video_null_free(void *data) { } +static void video_null_set_nonblock_state(void *a, bool b, bool c, unsigned d) { } +static bool video_null_alive(void *data) { return frontend_driver_get_signal_handler_state() != 1; } +static bool video_null_focus(void *data) { return true; } +static bool video_null_has_windowed(void *data) { return true; } +static bool video_null_suppress_screensaver(void *data, bool enable) { return false; } +static bool video_null_set_shader(void *data, + enum rarch_shader_type type, const char *path) { return false; } + +video_driver_t video_null = { + video_null_init, + video_null_frame, + video_null_set_nonblock_state, + video_null_alive, + video_null_focus, + video_null_suppress_screensaver, + video_null_has_windowed, + video_null_set_shader, + video_null_free, + "null", + NULL, /* set_viewport */ + NULL, /* set_rotation */ + NULL, /* viewport_info */ + NULL, /* read_viewport */ + NULL, /* read_frame_raw */ + +#ifdef HAVE_OVERLAY + NULL, /* overlay_interface */ +#endif +#ifdef HAVE_VIDEO_LAYOUT + NULL, +#endif + NULL, /* get_poke_interface */ +}; + +const video_driver_t *video_drivers[] = { +#ifdef __PSL1GHT__ + &video_gcm, +#endif +#ifdef HAVE_VITA2D + &video_vita2d, +#endif +#ifdef HAVE_OPENGL + &video_gl2, +#endif +#if defined(HAVE_OPENGL_CORE) + &video_gl_core, +#endif +#ifdef HAVE_OPENGL1 + &video_gl1, +#endif +#ifdef HAVE_VULKAN + &video_vulkan, +#endif +#ifdef HAVE_METAL + &video_metal, +#endif +#ifdef XENON + &video_xenon360, +#endif +#if defined(HAVE_D3D12) + &video_d3d12, +#endif +#if defined(HAVE_D3D11) + &video_d3d11, +#endif +#if defined(HAVE_D3D10) + &video_d3d10, +#endif +#if defined(HAVE_D3D9) + &video_d3d9, +#endif +#if defined(HAVE_D3D8) + &video_d3d8, +#endif +#ifdef PSP + &video_psp1, +#endif +#ifdef PS2 + &video_ps2, +#endif +#ifdef _3DS + &video_ctr, +#endif +#ifdef SWITCH + &video_switch, +#endif +#ifdef HAVE_ODROIDGO2 + &video_oga, +#endif +#if defined(HAVE_SDL) && !defined(HAVE_SDL_DINGUX) + &video_sdl, +#endif +#ifdef HAVE_SDL2 + &video_sdl2, +#endif +#ifdef HAVE_SDL_DINGUX +#if defined(RS90) + &video_sdl_rs90, +#else + &video_sdl_dingux, +#endif +#endif +#ifdef HAVE_XVIDEO + &video_xvideo, +#endif +#ifdef GEKKO + &video_gx, +#endif +#ifdef WIIU + &video_wiiu, +#endif +#ifdef HAVE_VG + &video_vg, +#endif +#ifdef HAVE_OMAP + &video_omap, +#endif +#ifdef HAVE_EXYNOS + &video_exynos, +#endif +#ifdef HAVE_DISPMANX + &video_dispmanx, +#endif +#ifdef HAVE_SUNXI + &video_sunxi, +#endif +#ifdef HAVE_PLAIN_DRM + &video_drm, +#endif +#ifdef HAVE_XSHM + &video_xshm, +#endif +#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__) +#ifdef HAVE_GDI + &video_gdi, +#endif +#endif +#ifdef DJGPP + &video_vga, +#endif +#ifdef HAVE_FPGA + &video_fpga, +#endif +#ifdef HAVE_SIXEL + &video_sixel, +#endif +#ifdef HAVE_CACA + &video_caca, +#endif +#ifdef HAVE_NETWORK_VIDEO + &video_network, +#endif + &video_null, + NULL, +}; + video_driver_t *hw_render_context_driver( enum retro_hw_context_type type, int major, int minor) { diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 8c4c798e51..eb959fb0e8 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1202,6 +1202,8 @@ video_pixel_scaler_t *video_driver_pixel_converter_init( void video_driver_filter_free(void); #endif +extern const video_driver_t *video_drivers[]; + extern video_driver_t video_gl_core; extern video_driver_t video_gl2; extern video_driver_t video_gl1; @@ -1240,6 +1242,7 @@ extern video_driver_t video_fpga; extern video_driver_t video_sixel; extern video_driver_t video_network; extern video_driver_t video_oga; +extern video_driver_t video_null; extern const gfx_ctx_driver_t gfx_ctx_osmesa; extern const gfx_ctx_driver_t gfx_ctx_sdl_gl; diff --git a/retroarch_data.h b/retroarch_data.h index 9df2e85fb7..7a70105ebc 100644 --- a/retroarch_data.h +++ b/retroarch_data.h @@ -471,181 +471,6 @@ static const video_display_server_t dispserv_null = { "null" }; -static void *video_null_init(const video_info_t *video, - input_driver_t **input, void **input_data) -{ - *input = NULL; - *input_data = NULL; - - frontend_driver_install_signal_handler(); - - return (void*)-1; -} - -static bool video_null_frame(void *data, const void *frame, - unsigned frame_width, unsigned frame_height, uint64_t frame_count, - unsigned pitch, const char *msg, video_frame_info_t *video_info) -{ - return true; -} - -static void video_null_free(void *data) { } -static void video_null_set_nonblock_state(void *a, bool b, bool c, unsigned d) { } -static bool video_null_alive(void *data) { return frontend_driver_get_signal_handler_state() != 1; } -static bool video_null_focus(void *data) { return true; } -static bool video_null_has_windowed(void *data) { return true; } -static bool video_null_suppress_screensaver(void *data, bool enable) { return false; } -static bool video_null_set_shader(void *data, - enum rarch_shader_type type, const char *path) { return false; } - -static video_driver_t video_null = { - video_null_init, - video_null_frame, - video_null_set_nonblock_state, - video_null_alive, - video_null_focus, - video_null_suppress_screensaver, - video_null_has_windowed, - video_null_set_shader, - video_null_free, - "null", - NULL, /* set_viewport */ - NULL, /* set_rotation */ - NULL, /* viewport_info */ - NULL, /* read_viewport */ - NULL, /* read_frame_raw */ - -#ifdef HAVE_OVERLAY - NULL, /* overlay_interface */ -#endif -#ifdef HAVE_VIDEO_LAYOUT - NULL, -#endif - NULL, /* get_poke_interface */ -}; - -static const video_driver_t *video_drivers[] = { -#ifdef __PSL1GHT__ - &video_gcm, -#endif -#ifdef HAVE_VITA2D - &video_vita2d, -#endif -#ifdef HAVE_OPENGL - &video_gl2, -#endif -#if defined(HAVE_OPENGL_CORE) - &video_gl_core, -#endif -#ifdef HAVE_OPENGL1 - &video_gl1, -#endif -#ifdef HAVE_VULKAN - &video_vulkan, -#endif -#ifdef HAVE_METAL - &video_metal, -#endif -#ifdef XENON - &video_xenon360, -#endif -#if defined(HAVE_D3D12) - &video_d3d12, -#endif -#if defined(HAVE_D3D11) - &video_d3d11, -#endif -#if defined(HAVE_D3D10) - &video_d3d10, -#endif -#if defined(HAVE_D3D9) - &video_d3d9, -#endif -#if defined(HAVE_D3D8) - &video_d3d8, -#endif -#ifdef PSP - &video_psp1, -#endif -#ifdef PS2 - &video_ps2, -#endif -#ifdef _3DS - &video_ctr, -#endif -#ifdef SWITCH - &video_switch, -#endif -#ifdef HAVE_ODROIDGO2 - &video_oga, -#endif -#if defined(HAVE_SDL) && !defined(HAVE_SDL_DINGUX) - &video_sdl, -#endif -#ifdef HAVE_SDL2 - &video_sdl2, -#endif -#ifdef HAVE_SDL_DINGUX -#if defined(RS90) - &video_sdl_rs90, -#else - &video_sdl_dingux, -#endif -#endif -#ifdef HAVE_XVIDEO - &video_xvideo, -#endif -#ifdef GEKKO - &video_gx, -#endif -#ifdef WIIU - &video_wiiu, -#endif -#ifdef HAVE_VG - &video_vg, -#endif -#ifdef HAVE_OMAP - &video_omap, -#endif -#ifdef HAVE_EXYNOS - &video_exynos, -#endif -#ifdef HAVE_DISPMANX - &video_dispmanx, -#endif -#ifdef HAVE_SUNXI - &video_sunxi, -#endif -#ifdef HAVE_PLAIN_DRM - &video_drm, -#endif -#ifdef HAVE_XSHM - &video_xshm, -#endif -#if defined(_WIN32) && !defined(_XBOX) && !defined(__WINRT__) -#ifdef HAVE_GDI - &video_gdi, -#endif -#endif -#ifdef DJGPP - &video_vga, -#endif -#ifdef HAVE_FPGA - &video_fpga, -#endif -#ifdef HAVE_SIXEL - &video_sixel, -#endif -#ifdef HAVE_CACA - &video_caca, -#endif -#ifdef HAVE_NETWORK_VIDEO - &video_network, -#endif - &video_null, - NULL, -}; - #ifdef HAVE_VULKAN static const gfx_ctx_driver_t *gfx_ctx_vk_drivers[] = { #if defined(__APPLE__)