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:
Marek Olšák
2014-08-06 13:20:41 +02:00
parent a2e1dc0cce
commit 88e0a2f88b

View File

@@ -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;
} }