The issue is that shaderc_result_get_num_errors may sometime return 0 even when shaderc_result_get_compilation_status returns a non-zero error code. Since we use the result from the former, override the status if it returned 0.
Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -65,6 +65,9 @@ static int shdc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, · 64 unmodified lines | |||
| 65 | warn = shaderc_result_get_num_warnings(res); | 65 | warn = shaderc_result_get_num_warnings(res); |
| 66 | message = shaderc_result_get_error_message(res); | 66 | message = shaderc_result_get_error_message(res); |
| 67 | 67 | ||
| 68 | if (ret != shaderc_compilation_status_success && !err) | ||
| 69 | err = 1; | ||
| 70 | |||
| 68 | loglevel = err ? AV_LOG_ERROR : warn ? AV_LOG_WARNING : AV_LOG_VERBOSE; | 71 | loglevel = err ? AV_LOG_ERROR : warn ? AV_LOG_WARNING : AV_LOG_VERBOSE; |
| 69 | 72 | ||
| 70 | ff_vk_shader_print(avctx, shd, loglevel); | 73 | ff_vk_shader_print(avctx, shd, loglevel); |