From cd77093588ccf44dc21d68d0aa956780aa7e6874 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 13 Mar 2019 12:11:31 +0100 Subject: [PATCH] Reimplement gl2_get_flags to no longer be reliant on shader driver's get flags implementation --- gfx/drivers/gl.c | 35 +++++++++++++++++++++++++++---- gfx/drivers_shader/shader_gl_cg.c | 2 +- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index a9d91bd7a0..9272d3c378 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -4129,15 +4129,42 @@ static float gl2_get_refresh_rate(void *data) static uint32_t gl2_get_flags(void *data) { - gl_t *gl = (gl_t*)data; - uint32_t flags = 0; + unsigned i; + uint32_t shader_driver_count = 0; + uint32_t flags = 0; BIT32_SET(flags, GFX_CTX_FLAGS_HARD_SYNC); BIT32_SET(flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION); BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING); - if (gl && gl->shader->get_flags) - gl->shader->get_flags(&flags); +#ifdef HAVE_GLSL + shader_driver_count++; +#endif +#ifdef HAVE_CG + shader_driver_count++; +#endif + +#ifdef HAVE_GLSL + for (i = 0; i < shader_driver_count; i++) + { + if (string_is_equal(gl2_shader_ctx_drivers[i]->ident, "glsl")) + { + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); + break; + } + } +#endif + +#ifdef HAVE_CG + for (i = 0; i < shader_driver_count; i++) + { + if (string_is_equal(gl2_shader_ctx_drivers[i]->ident, "cg")) + { + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_CG); + break; + } + } +#endif return flags; } diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 947fc5f3a0..250d2a6716 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -1236,5 +1236,5 @@ const shader_backend_t gl_cg_backend = { gl_cg_get_flags, RARCH_SHADER_CG, - "gl_cg" + "cg" };