From 82864559f2b493cf06c8eb27741549ff606db2a6 Mon Sep 17 00:00:00 2001 From: Exeldro Date: Sat, 30 Sep 2023 22:50:58 +0200 Subject: [PATCH] libobs: Fix errors for gs_effect_create --- libobs/graphics/effect-parser.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/libobs/graphics/effect-parser.c b/libobs/graphics/effect-parser.c index a7e3805f6..d260f9c67 100644 --- a/libobs/graphics/effect-parser.c +++ b/libobs/graphics/effect-parser.c @@ -1933,6 +1933,7 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep, pass_shaderparam_array_t *pass_params = NULL; gs_shader_t *shader = NULL; bool success = true; + char *errors = NULL; dstr_init(&shader_str); da_init(used_params); @@ -1954,8 +1955,8 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep, ep_makeshaderstring(ep, &shader_str, &pass_in->vertex_program, &used_params); - pass->vertshader = gs_vertexshader_create(shader_str.array, - location.array, NULL); + pass->vertshader = gs_vertexshader_create( + shader_str.array, location.array, &errors); shader = pass->vertshader; pass_params = &pass->vertshader_params; @@ -1963,13 +1964,19 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep, ep_makeshaderstring(ep, &shader_str, &pass_in->fragment_program, &used_params); - pass->pixelshader = gs_pixelshader_create(shader_str.array, - location.array, NULL); + pass->pixelshader = gs_pixelshader_create( + shader_str.array, location.array, &errors); shader = pass->pixelshader; pass_params = &pass->pixelshader_params; } + if (errors && strlen(errors)) { + cf_adderror(&ep->cfp, "Error creating shader: $1", LEX_ERROR, + errors, NULL, NULL); + } + bfree(errors); + #if defined(_DEBUG) && defined(_DEBUG_SHADERS) blog(LOG_DEBUG, "\t\t\t%s Shader:", type == GS_SHADER_VERTEX ? "Vertex" : "Fragment");