diff --git a/gfx/video_driver.c b/gfx/video_driver.c
index e840767484..8285221e41 100644
--- a/gfx/video_driver.c
+++ b/gfx/video_driver.c
@@ -14,6 +14,7 @@
* If not, see .
*/
+#include
#include
#ifdef HAVE_CONFIG_H
@@ -357,6 +358,40 @@ void video_context_driver_destroy(gfx_ctx_driver_t *ctx_driver)
ctx_driver->make_current = NULL;
}
+const gfx_ctx_driver_t *video_context_driver_init(
+ bool core_set_shared_context,
+ settings_t *settings,
+ void *data,
+ const gfx_ctx_driver_t *ctx,
+ const char *ident,
+ enum gfx_ctx_api api, unsigned major,
+ unsigned minor, bool hw_render_ctx,
+ void **ctx_data)
+{
+ if (!ctx->bind_api(data, api, major, minor))
+ {
+ RARCH_WARN("Failed to bind API (#%u, version %u.%u)"
+ " on context driver \"%s\".\n",
+ (unsigned)api, major, minor, ctx->ident);
+
+ return NULL;
+ }
+
+ if (!(*ctx_data = ctx->init(data)))
+ return NULL;
+
+ if (ctx->bind_hw_render)
+ {
+ bool video_shared_context =
+ settings->bools.video_shared_context || core_set_shared_context;
+
+ ctx->bind_hw_render(*ctx_data,
+ video_shared_context && hw_render_ctx);
+ }
+
+ return ctx;
+}
+
/**
* config_get_video_driver_options:
*
@@ -443,3 +478,41 @@ error:
#endif
return NULL;
}
+
+struct video_viewport *video_viewport_get_custom(void)
+{
+ return &config_get_ptr()->video_viewport_custom;
+}
+
+bool video_driver_monitor_adjust_system_rates(
+ float timing_skew_hz,
+ float video_refresh_rate,
+ bool vrr_runloop_enable,
+ float audio_max_timing_skew,
+ double input_fps)
+{
+ if (!vrr_runloop_enable)
+ {
+ float timing_skew = fabs(
+ 1.0f - input_fps / timing_skew_hz);
+ /* We don't want to adjust pitch too much. If we have extreme cases,
+ * just don't readjust at all. */
+ if (timing_skew <= audio_max_timing_skew)
+ return true;
+ RARCH_LOG("[Video]: Timings deviate too much. Will not adjust."
+ " (Display = %.2f Hz, Game = %.2f Hz)\n",
+ video_refresh_rate,
+ (float)input_fps);
+ }
+ return input_fps <= timing_skew_hz;
+}
+
+void video_driver_reset_custom_viewport(settings_t *settings)
+{
+ struct video_viewport *custom_vp = &settings->video_viewport_custom;
+
+ custom_vp->width = 0;
+ custom_vp->height = 0;
+ custom_vp->x = 0;
+ custom_vp->y = 0;
+}
diff --git a/gfx/video_driver.h b/gfx/video_driver.h
index 669e2e41a8..8c4c798e51 100644
--- a/gfx/video_driver.h
+++ b/gfx/video_driver.h
@@ -19,8 +19,10 @@
#include
+
#include
#include
+#include
#ifdef HAVE_CONFIG_H
#include "../config.h"
@@ -29,6 +31,7 @@
#include
#include
+#include "../configuration.h"
#include "../input/input_driver.h"
#include "../input/input_types.h"
@@ -837,9 +840,7 @@ bool video_driver_supports_read_frame_raw(void);
void video_driver_set_viewport_core(void);
-void video_driver_set_viewport_full(void);
-
-void video_driver_reset_custom_viewport(void *settings_data);
+void video_driver_reset_custom_viewport(settings_t *settings);
void video_driver_set_rgba(void);
@@ -1019,6 +1020,13 @@ void video_monitor_compute_fps_statistics(uint64_t
bool video_monitor_fps_statistics(double *refresh_rate,
double *deviation, unsigned *sample_points);
+bool video_driver_monitor_adjust_system_rates(
+ float timing_skew_hz,
+ float video_refresh_rate,
+ bool vrr_runloop_enable,
+ float audio_max_timing_skew,
+ double input_fps);
+
void crt_switch_driver_refresh(void);
char* crt_switch_core_name(void);
@@ -1063,8 +1071,6 @@ void video_driver_display_userdata_set(uintptr_t idx);
void video_driver_window_set(uintptr_t idx);
-uintptr_t video_driver_window_get(void);
-
bool video_driver_texture_load(void *data,
enum texture_filter_type filter_type,
uintptr_t *id);
@@ -1081,6 +1087,33 @@ bool *video_driver_get_threaded(void);
void video_driver_set_threaded(bool val);
+/**
+ * video_context_driver_init:
+ * @core_set_shared_context : Boolean value that tells us whether shared context
+ * is set.
+ * @ctx : Graphics context driver to initialize.
+ * @ident : Identifier of graphics context driver to find.
+ * @api : API of higher-level graphics API.
+ * @major : Major version number of higher-level graphics API.
+ * @minor : Minor version number of higher-level graphics API.
+ * @hw_render_ctx : Request a graphics context driver capable of
+ * hardware rendering?
+ *
+ * Initialize graphics context driver.
+ *
+ * Returns: graphics context driver if successfully initialized,
+ * otherwise NULL.
+ **/
+const gfx_ctx_driver_t *video_context_driver_init(
+ bool core_set_shared_context,
+ settings_t *settings,
+ void *data,
+ const gfx_ctx_driver_t *ctx,
+ const char *ident,
+ enum gfx_ctx_api api, unsigned major,
+ unsigned minor, bool hw_render_ctx,
+ void **ctx_data);
+
/**
* video_context_driver_init_first:
* @data : Input data.
diff --git a/retroarch.c b/retroarch.c
index f9296129c1..688c01cd17 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -1749,15 +1749,14 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
break;
case RARCH_MENU_CTL_OSK_PTR_AT_POS:
{
- unsigned width = 0;
- unsigned height = 0;
+ unsigned width = p_rarch->video_driver_width;
+ unsigned height = p_rarch->video_driver_height;
menu_ctx_pointer_t *point = (menu_ctx_pointer_t*)data;
if (!menu_st->driver_ctx || !menu_st->driver_ctx->osk_ptr_at_pos)
{
point->retcode = 0;
return false;
}
- video_driver_get_size(&width, &height);
point->retcode = menu_st->driver_ctx->osk_ptr_at_pos(
menu_st->userdata,
point->x, point->y, width, height);
@@ -21427,29 +21426,6 @@ void video_driver_cached_frame(void)
p_rarch->recording_data = recording;
}
-static bool video_driver_monitor_adjust_system_rates(
- float timing_skew_hz,
- float video_refresh_rate,
- bool vrr_runloop_enable,
- float audio_max_timing_skew,
- double input_fps)
-{
- if (!vrr_runloop_enable)
- {
- float timing_skew = fabs(
- 1.0f - input_fps / timing_skew_hz);
- /* We don't want to adjust pitch too much. If we have extreme cases,
- * just don't readjust at all. */
- if (timing_skew <= audio_max_timing_skew)
- return true;
- RARCH_LOG("[Video]: Timings deviate too much. Will not adjust."
- " (Display = %.2f Hz, Game = %.2f Hz)\n",
- video_refresh_rate,
- (float)input_fps);
- }
- return input_fps <= timing_skew_hz;
-}
-
static void video_driver_lock_new(struct rarch_state *p_rarch)
{
VIDEO_DRIVER_LOCK_FREE();
@@ -21533,30 +21509,6 @@ void video_driver_set_viewport_core(void)
(float)geom->base_width / geom->base_height;
}
-void video_driver_set_viewport_full(void)
-{
- unsigned width = 0;
- unsigned height = 0;
-
- video_driver_get_size(&width, &height);
-
- if (width == 0 || height == 0)
- return;
-
- aspectratio_lut[ASPECT_RATIO_FULL].value = (float)width / (float)height;
-}
-
-void video_driver_reset_custom_viewport(void *settings_data)
-{
- settings_t *settings = (settings_t*)settings_data;
- struct video_viewport *custom_vp = &settings->video_viewport_custom;
-
- custom_vp->width = 0;
- custom_vp->height = 0;
- custom_vp->x = 0;
- custom_vp->y = 0;
-}
-
void video_driver_set_rgba(void)
{
struct rarch_state *p_rarch = &rarch_st;
@@ -21666,7 +21618,13 @@ void video_driver_set_aspect_ratio(void)
break;
case ASPECT_RATIO_FULL:
- video_driver_set_viewport_full();
+ {
+ unsigned width = p_rarch->video_driver_width;
+ unsigned height = p_rarch->video_driver_height;
+
+ if (width != 0 && height != 0)
+ aspectratio_lut[ASPECT_RATIO_FULL].value = (float)width / (float)height;
+ }
break;
default:
@@ -22101,13 +22059,6 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
vp->y = padding_y / 2;
}
-struct video_viewport *video_viewport_get_custom(void)
-{
- struct rarch_state *p_rarch = &rarch_st;
- settings_t *settings = p_rarch->configuration_settings;
- return &settings->video_viewport_custom;
-}
-
/**
* video_driver_frame:
* @data : pointer to data of the video frame.
@@ -22784,57 +22735,6 @@ void video_driver_get_window_title(char *buf, unsigned len)
}
}
-/**
- * video_context_driver_init:
- * @core_set_shared_context : Boolean value that tells us whether shared context
- * is set.
- * @ctx : Graphics context driver to initialize.
- * @ident : Identifier of graphics context driver to find.
- * @api : API of higher-level graphics API.
- * @major : Major version number of higher-level graphics API.
- * @minor : Minor version number of higher-level graphics API.
- * @hw_render_ctx : Request a graphics context driver capable of
- * hardware rendering?
- *
- * Initialize graphics context driver.
- *
- * Returns: graphics context driver if successfully initialized,
- * otherwise NULL.
- **/
-static const gfx_ctx_driver_t *video_context_driver_init(
- bool core_set_shared_context,
- settings_t *settings,
- void *data,
- const gfx_ctx_driver_t *ctx,
- const char *ident,
- enum gfx_ctx_api api, unsigned major,
- unsigned minor, bool hw_render_ctx,
- void **ctx_data)
-{
- if (!ctx->bind_api(data, api, major, minor))
- {
- RARCH_WARN("Failed to bind API (#%u, version %u.%u)"
- " on context driver \"%s\".\n",
- (unsigned)api, major, minor, ctx->ident);
-
- return NULL;
- }
-
- if (!(*ctx_data = ctx->init(data)))
- return NULL;
-
- if (ctx->bind_hw_render)
- {
- bool video_shared_context =
- settings->bools.video_shared_context || core_set_shared_context;
-
- ctx->bind_hw_render(*ctx_data,
- video_shared_context && hw_render_ctx);
- }
-
- return ctx;
-}
-
#ifdef HAVE_VULKAN
static const gfx_ctx_driver_t *vk_context_driver_init_first(
struct rarch_state *p_rarch,