From 5d91af629e9837667cfb424902e6796b222d5867 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 19 Jun 2019 03:18:28 +0200 Subject: [PATCH] Set SHADERS_SLANG flag for D3D10/11/12 and query the video driver poke interface's 'get flags' function before querying the video context driver's 'get flags' function (D3D10/11/12/WiiU don't have a context driver at all) --- gfx/drivers/d3d10.c | 3 +++ gfx/drivers/d3d11.c | 3 +++ gfx/drivers/d3d12.c | 3 +++ gfx/drivers/gx2_gfx.c | 3 +++ gfx/video_shader_parse.c | 2 +- retroarch.c | 2 +- retroarch.h | 2 ++ 7 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index 6bbc39a15f..23f76b1d7f 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -1712,6 +1712,9 @@ static uint32_t d3d10_get_flags(void *data) uint32_t flags = 0; BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING); +#if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif return flags; } diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 724b2d3e62..79e436953f 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -1780,6 +1780,9 @@ static uint32_t d3d11_get_flags(void *data) uint32_t flags = 0; BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING); +#if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif return flags; } diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index c191471be6..8b14c87817 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -1796,6 +1796,9 @@ static uint32_t d3d12_get_flags(void *data) uint32_t flags = 0; BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING); +#if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif return flags; } diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 29df0ce29b..f3c7ac0277 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -1717,6 +1717,9 @@ static uint32_t wiiu_gfx_get_flags(void *data) uint32_t flags = 0; BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED); +#if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS) + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif return flags; } diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index d51645d1ec..ae2bf4a78d 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -1179,7 +1179,7 @@ bool video_shader_is_supported(enum rarch_shader_type type) default: return false; } - + video_driver_get_flags(&flags); video_context_driver_get_flags(&flags); return BIT32_GET(flags.flags, testflag); diff --git a/retroarch.c b/retroarch.c index e2933b71b6..4018f8e75b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -10150,7 +10150,7 @@ bool video_context_driver_get_flags(gfx_ctx_flags_t *flags) return true; } -static bool video_driver_get_flags(gfx_ctx_flags_t *flags) +bool video_driver_get_flags(gfx_ctx_flags_t *flags) { if (!video_driver_poke || !video_driver_poke->get_flags) return false; diff --git a/retroarch.h b/retroarch.h index 1aae5b5b07..beab72367e 100644 --- a/retroarch.h +++ b/retroarch.h @@ -2020,6 +2020,8 @@ bool video_driver_started_fullscreen(void); bool video_driver_is_threaded(void); +bool video_driver_get_flags(gfx_ctx_flags_t *flags); + bool video_context_driver_get_flags(gfx_ctx_flags_t *flags); bool video_driver_test_all_flags(enum display_flags testflag);