mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 15:45:19 +00:00
Fix video filters for builds where both 'HAVE_DYLIB' and 'HAVE_FILTERS_BUILTIN' are defined
This commit is contained in:
parent
bc43db1789
commit
b8fb26c196
@ -267,66 +267,7 @@ static bool create_softfilter_graph(rarch_softfilter_t *filt,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DYLIB
|
#if defined(HAVE_FILTERS_BUILTIN)
|
||||||
static bool append_softfilter_plugs(rarch_softfilter_t *filt,
|
|
||||||
struct string_list *list)
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
softfilter_simd_mask_t mask = (softfilter_simd_mask_t)cpu_features_get();
|
|
||||||
|
|
||||||
for (i = 0; i < list->size; i++)
|
|
||||||
{
|
|
||||||
softfilter_get_implementation_t cb;
|
|
||||||
const struct softfilter_implementation *impl = NULL;
|
|
||||||
struct rarch_soft_plug *new_plugs = NULL;
|
|
||||||
dylib_t lib =
|
|
||||||
dylib_load(list->elems[i].data);
|
|
||||||
|
|
||||||
if (!lib)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
cb = (softfilter_get_implementation_t)
|
|
||||||
dylib_proc(lib, "softfilter_get_implementation");
|
|
||||||
|
|
||||||
if (!cb)
|
|
||||||
{
|
|
||||||
dylib_close(lib);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl = cb(mask);
|
|
||||||
if (!impl)
|
|
||||||
{
|
|
||||||
dylib_close(lib);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (impl->api_version != SOFTFILTER_API_VERSION)
|
|
||||||
{
|
|
||||||
dylib_close(lib);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
new_plugs = (struct rarch_soft_plug*)
|
|
||||||
realloc(filt->plugs, sizeof(*filt->plugs) * (filt->num_plugs + 1));
|
|
||||||
if (!new_plugs)
|
|
||||||
{
|
|
||||||
dylib_close(lib);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
RARCH_LOG("[SoftFilter]: Found plug: %s (%s).\n",
|
|
||||||
impl->ident, impl->short_ident);
|
|
||||||
|
|
||||||
filt->plugs = new_plugs;
|
|
||||||
filt->plugs[filt->num_plugs].lib = lib;
|
|
||||||
filt->plugs[filt->num_plugs].impl = impl;
|
|
||||||
filt->num_plugs++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#elif defined(HAVE_FILTERS_BUILTIN)
|
|
||||||
extern const struct softfilter_implementation *blargg_ntsc_snes_get_implementation(softfilter_simd_mask_t simd);
|
extern const struct softfilter_implementation *blargg_ntsc_snes_get_implementation(softfilter_simd_mask_t simd);
|
||||||
extern const struct softfilter_implementation *lq2x_get_implementation(softfilter_simd_mask_t simd);
|
extern const struct softfilter_implementation *lq2x_get_implementation(softfilter_simd_mask_t simd);
|
||||||
extern const struct softfilter_implementation *phosphor2x_get_implementation(softfilter_simd_mask_t simd);
|
extern const struct softfilter_implementation *phosphor2x_get_implementation(softfilter_simd_mask_t simd);
|
||||||
@ -391,6 +332,65 @@ static bool append_softfilter_plugs(rarch_softfilter_t *filt,
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#elif defined(HAVE_DYLIB)
|
||||||
|
static bool append_softfilter_plugs(rarch_softfilter_t *filt,
|
||||||
|
struct string_list *list)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
softfilter_simd_mask_t mask = (softfilter_simd_mask_t)cpu_features_get();
|
||||||
|
|
||||||
|
for (i = 0; i < list->size; i++)
|
||||||
|
{
|
||||||
|
softfilter_get_implementation_t cb;
|
||||||
|
const struct softfilter_implementation *impl = NULL;
|
||||||
|
struct rarch_soft_plug *new_plugs = NULL;
|
||||||
|
dylib_t lib =
|
||||||
|
dylib_load(list->elems[i].data);
|
||||||
|
|
||||||
|
if (!lib)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cb = (softfilter_get_implementation_t)
|
||||||
|
dylib_proc(lib, "softfilter_get_implementation");
|
||||||
|
|
||||||
|
if (!cb)
|
||||||
|
{
|
||||||
|
dylib_close(lib);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl = cb(mask);
|
||||||
|
if (!impl)
|
||||||
|
{
|
||||||
|
dylib_close(lib);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (impl->api_version != SOFTFILTER_API_VERSION)
|
||||||
|
{
|
||||||
|
dylib_close(lib);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_plugs = (struct rarch_soft_plug*)
|
||||||
|
realloc(filt->plugs, sizeof(*filt->plugs) * (filt->num_plugs + 1));
|
||||||
|
if (!new_plugs)
|
||||||
|
{
|
||||||
|
dylib_close(lib);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RARCH_LOG("[SoftFilter]: Found plug: %s (%s).\n",
|
||||||
|
impl->ident, impl->short_ident);
|
||||||
|
|
||||||
|
filt->plugs = new_plugs;
|
||||||
|
filt->plugs[filt->num_plugs].lib = lib;
|
||||||
|
filt->plugs[filt->num_plugs].impl = impl;
|
||||||
|
filt->num_plugs++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static bool append_softfilter_plugs(rarch_softfilter_t *filt,
|
static bool append_softfilter_plugs(rarch_softfilter_t *filt,
|
||||||
struct string_list *list)
|
struct string_list *list)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user