diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 1459dfb9f2..22e16e66d3 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3339,6 +3339,21 @@ void video_context_driver_set_data(void *data) video_context_data = data; } +bool video_driver_get_all_flags(gfx_ctx_flags_t *flags, enum display_flags flag) +{ + if (video_driver_get_flags(flags)) + if (BIT32_GET(flags->flags, flag)) + return true; + + flags->flags = 0; + + if (video_context_driver_get_flags(flags)) + if (BIT32_GET(flags->flags, flag)) + return true; + + return false; +} + bool video_driver_get_flags(gfx_ctx_flags_t *flags) { if (!flags || !video_driver_poke || !video_driver_poke->get_flags) diff --git a/gfx/video_driver.h b/gfx/video_driver.h index f2fe5675dd..c83d15fbc4 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1249,6 +1249,9 @@ bool video_driver_started_fullscreen(void); bool video_driver_is_threaded(void); +bool video_driver_get_all_flags(gfx_ctx_flags_t *flags, + enum display_flags flag); + extern video_driver_t video_gl; extern video_driver_t video_vulkan; extern video_driver_t video_metal; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index decb1c23f9..298208640c 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4338,19 +4338,8 @@ static bool setting_append_list( { gfx_ctx_flags_t flags; - bool customizable_swapchain_set = false; - if (video_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES)) - customizable_swapchain_set = true; - - flags.flags = 0; - - if (video_context_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES)) - customizable_swapchain_set = true; - - if (customizable_swapchain_set) + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_CUSTOMIZABLE_SWAPCHAIN_IMAGES)) { CONFIG_UINT( list, list_info, @@ -4370,19 +4359,8 @@ static bool setting_append_list( { gfx_ctx_flags_t flags; - bool hard_sync_supported = false; - if (video_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_HARD_SYNC)) - hard_sync_supported = true; - - flags.flags = 0; - - if (video_context_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_HARD_SYNC)) - hard_sync_supported = true; - - if (hard_sync_supported) + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_HARD_SYNC)) { CONFIG_BOOL( list, list_info, @@ -4417,19 +4395,8 @@ static bool setting_append_list( { gfx_ctx_flags_t flags; - bool adaptive_vsync_supported = false; - if (video_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_ADAPTIVE_VSYNC)) - adaptive_vsync_supported = true; - - flags.flags = 0; - - if (video_context_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_ADAPTIVE_VSYNC)) - adaptive_vsync_supported = true; - - if (adaptive_vsync_supported) + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_ADAPTIVE_VSYNC)) { CONFIG_BOOL( list, list_info, @@ -4466,19 +4433,8 @@ static bool setting_append_list( #if !defined(RARCH_MOBILE) { gfx_ctx_flags_t flags; - bool black_frame_insertion_supported = false; - if (video_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION)) - black_frame_insertion_supported = true; - - flags.flags = 0; - - if (video_context_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION)) - black_frame_insertion_supported = true; - - if (black_frame_insertion_supported) + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION)) { CONFIG_BOOL( list, list_info, @@ -6019,17 +5975,6 @@ static bool setting_append_list( if (string_is_equal(settings->arrays.menu_driver, "rgui")) { gfx_ctx_flags_t flags; - bool setting_set = false; - - if (video_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING)) - setting_set = true; - - flags.flags = 0; - - if (video_context_driver_get_flags(&flags)) - if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING)) - setting_set = true; CONFIG_BOOL( list, list_info, @@ -6079,7 +6024,7 @@ static bool setting_append_list( SD_FLAG_NONE ); - if (setting_set) + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING)) CONFIG_BOOL( list, list_info, &settings->bools.menu_linear_filter,