st/mesa: dump TGSI before calling into the driver
If the driver crashes in create_xx_shader, you want to see the shader. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -393,13 +393,12 @@ st_translate_vertex_program(struct st_context *st,
|
|||||||
&vpv->tgsi.stream_output);
|
&vpv->tgsi.stream_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
vpv->driver_shader = pipe->create_vs_state(pipe, &vpv->tgsi);
|
|
||||||
|
|
||||||
if (ST_DEBUG & DEBUG_TGSI) {
|
if (ST_DEBUG & DEBUG_TGSI) {
|
||||||
tgsi_dump(vpv->tgsi.tokens, 0);
|
tgsi_dump(vpv->tgsi.tokens, 0);
|
||||||
debug_printf("\n");
|
debug_printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vpv->driver_shader = pipe->create_vs_state(pipe, &vpv->tgsi);
|
||||||
return vpv;
|
return vpv;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
@@ -804,15 +803,15 @@ st_translate_fragment_program(struct st_context *st,
|
|||||||
variant->tgsi.tokens = ureg_get_tokens( ureg, NULL );
|
variant->tgsi.tokens = ureg_get_tokens( ureg, NULL );
|
||||||
ureg_destroy( ureg );
|
ureg_destroy( ureg );
|
||||||
|
|
||||||
/* fill in variant */
|
|
||||||
variant->driver_shader = pipe->create_fs_state(pipe, &variant->tgsi);
|
|
||||||
variant->key = *key;
|
|
||||||
|
|
||||||
if (ST_DEBUG & DEBUG_TGSI) {
|
if (ST_DEBUG & DEBUG_TGSI) {
|
||||||
tgsi_dump(variant->tgsi.tokens, 0/*TGSI_DUMP_VERBOSE*/);
|
tgsi_dump(variant->tgsi.tokens, 0/*TGSI_DUMP_VERBOSE*/);
|
||||||
debug_printf("\n");
|
debug_printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fill in variant */
|
||||||
|
variant->driver_shader = pipe->create_fs_state(pipe, &variant->tgsi);
|
||||||
|
variant->key = *key;
|
||||||
|
|
||||||
if (deleteFP) {
|
if (deleteFP) {
|
||||||
/* Free the temporary program made above */
|
/* Free the temporary program made above */
|
||||||
struct gl_fragment_program *fp = &stfp->Base;
|
struct gl_fragment_program *fp = &stfp->Base;
|
||||||
@@ -1173,10 +1172,6 @@ st_translate_geometry_program(struct st_context *st,
|
|||||||
&stgp->tgsi.stream_output);
|
&stgp->tgsi.stream_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill in new variant */
|
|
||||||
gpv->driver_shader = pipe->create_gs_state(pipe, &stgp->tgsi);
|
|
||||||
gpv->key = *key;
|
|
||||||
|
|
||||||
if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
|
if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
|
||||||
_mesa_print_program(&stgp->Base.Base);
|
_mesa_print_program(&stgp->Base.Base);
|
||||||
debug_printf("\n");
|
debug_printf("\n");
|
||||||
@@ -1187,6 +1182,9 @@ st_translate_geometry_program(struct st_context *st,
|
|||||||
debug_printf("\n");
|
debug_printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fill in new variant */
|
||||||
|
gpv->driver_shader = pipe->create_gs_state(pipe, &stgp->tgsi);
|
||||||
|
gpv->key = *key;
|
||||||
return gpv;
|
return gpv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user