Something went wrong. Try again.
🎥 Command line media player
Something went wrong. Try again.
C
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#include "common/msg.h"#include "options/m_config.h"
#include "spirv.h"#include "config.h"
extern const struct spirv_compiler_fns spirv_shaderc;
// in probe-orderenum { SPIRV_AUTO = 0, SPIRV_SHADERC, // generally preferred, but not packaged everywhere};
static const struct spirv_compiler_fns *compilers[] = {#if HAVE_SHADERC [SPIRV_SHADERC] = &spirv_shaderc,#endif};
static const struct m_opt_choice_alternatives compiler_choices[] = { {"auto", SPIRV_AUTO},#if HAVE_SHADERC {"shaderc", SPIRV_SHADERC},#endif {0}};
struct spirv_opts { int compiler;};
#define OPT_BASE_STRUCT struct spirv_optsconst struct m_sub_options spirv_conf = { .opts = (const struct m_option[]) { OPT_CHOICE_C("spirv-compiler", compiler, 0, compiler_choices), {0} }, .size = sizeof(struct spirv_opts),};
bool spirv_compiler_init(struct ra_ctx *ctx){ void *tmp = talloc_new(NULL); struct spirv_opts *opts = mp_get_config_group(tmp, ctx->global, &spirv_conf); int compiler = opts->compiler; talloc_free(tmp);
for (int i = SPIRV_AUTO+1; i < MP_ARRAY_SIZE(compilers); i++) { if (compiler != SPIRV_AUTO && i != compiler) continue; if (!compilers[i]) continue;
ctx->spirv = talloc_zero(ctx, struct spirv_compiler); ctx->spirv->log = ctx->log, ctx->spirv->fns = compilers[i];
const char *name = m_opt_choice_str(compiler_choices, i); strncpy(ctx->spirv->name, name, sizeof(ctx->spirv->name) - 1); MP_VERBOSE(ctx, "Initializing SPIR-V compiler '%s'\n", name); if (ctx->spirv->fns->init(ctx)) return true; talloc_free(ctx->spirv); ctx->spirv = NULL; }
MP_ERR(ctx, "Failed initializing SPIR-V compiler!\n"); return false;}