mirror of
https://github.com/libretro/RetroArch.git
synced 2025-04-02 10:51:52 -04:00
Reimplement video_shader_get_type_from_ext
This commit is contained in:
parent
4c29f3102f
commit
57e11a10e7
3 changed files with 39 additions and 136 deletions
|
@ -254,9 +254,6 @@ bool command_set_shader(const char *arg)
|
||||||
bool is_preset = false;
|
bool is_preset = false;
|
||||||
enum rarch_shader_type type = video_shader_get_type_from_ext(
|
enum rarch_shader_type type = video_shader_get_type_from_ext(
|
||||||
path_get_extension(arg), &is_preset);
|
path_get_extension(arg), &is_preset);
|
||||||
#ifdef HAVE_MENU
|
|
||||||
struct video_shader *shader = menu_shader_get();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (type == RARCH_SHADER_NONE)
|
if (type == RARCH_SHADER_NONE)
|
||||||
return false;
|
return false;
|
||||||
|
@ -269,7 +266,7 @@ bool command_set_shader(const char *arg)
|
||||||
|
|
||||||
retroarch_set_shader_preset(arg);
|
retroarch_set_shader_preset(arg);
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
return menu_shader_manager_set_preset(shader, type, arg);
|
return menu_shader_manager_set_preset(menu_shader_get(), type, arg);
|
||||||
#else
|
#else
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1152,147 +1152,54 @@ bool video_shader_any_supported(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum rarch_shader_type video_shader_get_type_from_ext(
|
enum rarch_shader_type video_shader_get_type_from_ext(const char *ext,
|
||||||
const char *ext, bool *is_preset)
|
bool *is_preset)
|
||||||
{
|
{
|
||||||
enum gfx_ctx_api api = video_context_driver_get_api();
|
|
||||||
|
|
||||||
if (string_is_empty(ext))
|
if (string_is_empty(ext))
|
||||||
return RARCH_SHADER_NONE;
|
return RARCH_SHADER_NONE;
|
||||||
|
|
||||||
if (strlen(ext) > 1 && ext[0] == '.')
|
if (strlen(ext) > 1 && ext[0] == '.')
|
||||||
ext++;
|
ext++;
|
||||||
|
|
||||||
*is_preset = false;
|
|
||||||
|
|
||||||
if (
|
|
||||||
string_is_equal_case_insensitive(ext, "cg")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
switch (api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
|
||||||
return RARCH_SHADER_CG;
|
|
||||||
case GFX_CTX_OPENGL_API:
|
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
|
||||||
{
|
|
||||||
struct retro_hw_render_callback *hwr =
|
|
||||||
video_driver_get_hw_context();
|
|
||||||
if (hwr)
|
|
||||||
{
|
|
||||||
switch (hwr->context_type)
|
|
||||||
{
|
|
||||||
case RETRO_HW_CONTEXT_OPENGLES2:
|
|
||||||
case RETRO_HW_CONTEXT_OPENGL_CORE:
|
|
||||||
case RETRO_HW_CONTEXT_OPENGLES3:
|
|
||||||
return RARCH_SHADER_NONE;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return RARCH_SHADER_CG;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
string_is_equal_case_insensitive(ext, "cgp")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
*is_preset = true;
|
|
||||||
switch (api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
|
||||||
return RARCH_SHADER_CG;
|
|
||||||
case GFX_CTX_OPENGL_API:
|
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
|
||||||
{
|
|
||||||
struct retro_hw_render_callback *hwr =
|
|
||||||
video_driver_get_hw_context();
|
|
||||||
if (hwr)
|
|
||||||
{
|
|
||||||
switch (hwr->context_type)
|
|
||||||
{
|
|
||||||
case RETRO_HW_CONTEXT_OPENGLES2:
|
|
||||||
case RETRO_HW_CONTEXT_OPENGL_CORE:
|
|
||||||
case RETRO_HW_CONTEXT_OPENGLES3:
|
|
||||||
return RARCH_SHADER_NONE;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return RARCH_SHADER_CG;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
string_is_equal_case_insensitive(ext, "glsl")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
switch (api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_OPENGL_API:
|
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
|
||||||
return RARCH_SHADER_GLSL;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
string_is_equal_case_insensitive(ext, "glslp")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
*is_preset = true;
|
|
||||||
switch (api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_OPENGL_API:
|
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
|
||||||
return RARCH_SHADER_GLSL;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
string_is_equal_case_insensitive(ext, "slang")
|
|
||||||
)
|
|
||||||
{
|
|
||||||
switch (api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_DIRECT3D10_API:
|
|
||||||
case GFX_CTX_DIRECT3D11_API:
|
|
||||||
case GFX_CTX_DIRECT3D12_API:
|
|
||||||
case GFX_CTX_GX2_API:
|
|
||||||
case GFX_CTX_VULKAN_API:
|
|
||||||
case GFX_CTX_OPENGL_API:
|
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
|
||||||
case GFX_CTX_METAL_API:
|
|
||||||
return RARCH_SHADER_SLANG;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
if (
|
||||||
|
string_is_equal_case_insensitive(ext, "cgp") ||
|
||||||
|
string_is_equal_case_insensitive(ext, "glslp") ||
|
||||||
string_is_equal_case_insensitive(ext, "slangp")
|
string_is_equal_case_insensitive(ext, "slangp")
|
||||||
)
|
)
|
||||||
{
|
|
||||||
*is_preset = true;
|
*is_preset = true;
|
||||||
|
else
|
||||||
|
*is_preset = false;
|
||||||
|
|
||||||
switch (api)
|
{
|
||||||
|
gfx_ctx_flags_t flags;
|
||||||
|
if (string_is_equal_case_insensitive(ext, "cgp") ||
|
||||||
|
string_is_equal_case_insensitive(ext, "cg")
|
||||||
|
)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D10_API:
|
if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG))
|
||||||
case GFX_CTX_DIRECT3D11_API:
|
return RARCH_SHADER_CG;
|
||||||
case GFX_CTX_DIRECT3D12_API:
|
}
|
||||||
case GFX_CTX_GX2_API:
|
}
|
||||||
case GFX_CTX_VULKAN_API:
|
|
||||||
case GFX_CTX_OPENGL_API:
|
{
|
||||||
case GFX_CTX_OPENGL_ES_API:
|
gfx_ctx_flags_t flags;
|
||||||
case GFX_CTX_METAL_API:
|
if (string_is_equal_case_insensitive(ext, "glslp") ||
|
||||||
|
string_is_equal_case_insensitive(ext, "glsl")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL))
|
||||||
|
return RARCH_SHADER_GLSL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
gfx_ctx_flags_t flags;
|
||||||
|
if (string_is_equal_case_insensitive(ext, "slangp") ||
|
||||||
|
string_is_equal_case_insensitive(ext, "slang")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG))
|
||||||
return RARCH_SHADER_SLANG;
|
return RARCH_SHADER_SLANG;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1313,8 +1220,7 @@ enum rarch_shader_type video_shader_get_type_from_ext(
|
||||||
enum rarch_shader_type video_shader_parse_type(const char *path,
|
enum rarch_shader_type video_shader_parse_type(const char *path,
|
||||||
enum rarch_shader_type fallback)
|
enum rarch_shader_type fallback)
|
||||||
{
|
{
|
||||||
bool is_preset = false;
|
bool is_preset = false;
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
return fallback;
|
return fallback;
|
||||||
return video_shader_get_type_from_ext(path_get_extension(path),
|
return video_shader_get_type_from_ext(path_get_extension(path),
|
||||||
|
|
|
@ -241,8 +241,8 @@ bool video_shader_resolve_parameters(config_file_t *conf,
|
||||||
enum rarch_shader_type video_shader_parse_type(const char *path,
|
enum rarch_shader_type video_shader_parse_type(const char *path,
|
||||||
enum rarch_shader_type fallback);
|
enum rarch_shader_type fallback);
|
||||||
|
|
||||||
enum rarch_shader_type video_shader_get_type_from_ext(
|
enum rarch_shader_type video_shader_get_type_from_ext(const char *ext,
|
||||||
const char *ext, bool *is_preset);
|
bool *is_preset);
|
||||||
|
|
||||||
bool video_shader_is_supported(enum rarch_shader_type type);
|
bool video_shader_is_supported(enum rarch_shader_type type);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue