r300g: Do not abort on fragment program compiler error

Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
This commit is contained in:
Nicolai Hähnle 2009-10-03 19:20:31 +02:00
parent 59b20b760d
commit 81e5188f66
2 changed files with 9 additions and 4 deletions

View file

@ -126,9 +126,14 @@ void r300_translate_fragment_shader(struct r300_context* r300,
/* Invoke the compiler */
r3xx_compile_fragment_program(&compiler);
if (compiler.Base.Error) {
/* Todo: Fail gracefully */
fprintf(stderr, "r300 FP: Compiler error\n");
abort();
/* Todo: Fallback to software rendering gracefully? */
fprintf(stderr, "r300 FP: Compiler error: %s\n", compiler.Base.ErrorMsg);
if (compiler.is_r500) {
memcpy(compiler.code, &r5xx_passthrough_fragment_shader, sizeof(r5xx_passthrough_fragment_shader));
} else {
memcpy(compiler.code, &r3xx_passthrough_fragment_shader, sizeof(r3xx_passthrough_fragment_shader));
}
}
/* And, finally... */

View file

@ -48,4 +48,4 @@ struct r300_fragment_shader {
void r300_translate_fragment_shader(struct r300_context* r300,
struct r300_fragment_shader* fs);
#endif /* R300_FS_H */
#endif /* R300_FS_H */