radeonsi: If pixel shader compilation fails, use a dummy shader.
[mesa.git] / src / gallium / drivers / radeonsi / radeonsi_shader.c
index e3069df48306e9206b02298f09b7c850da7e6d95..a05061765efebbf9317ac0b1c3f52882368f61b6 100644 (file)
@@ -600,6 +600,7 @@ int si_pipe_shader_create(
 
        dump = debug_get_bool_option("RADEON_DUMP_SHADERS", FALSE);
 
+       memset(&si_shader_ctx.radeon_bld, 0, sizeof(si_shader_ctx.radeon_bld));
        radeon_llvm_context_init(&si_shader_ctx.radeon_bld);
        bld_base = &si_shader_ctx.radeon_bld.soa.bld_base;
 
@@ -626,7 +627,10 @@ int si_pipe_shader_create(
                tgsi_dump(shader->tokens, 0);
        }
 
-       lp_build_tgsi_llvm(bld_base, shader->tokens);
+       if (!lp_build_tgsi_llvm(bld_base, shader->tokens)) {
+               fprintf(stderr, "Failed to translate shader from TGSI to LLVM\n");
+               return -EINVAL;
+       }
 
        radeon_llvm_finalize_module(&si_shader_ctx.radeon_bld);