if (prog)
shader = (brw_shader *) prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
- if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
- if (prog) {
- printf("GLSL IR for native fragment shader %d:\n", prog->Name);
- _mesa_print_ir(shader->base.ir, NULL);
- printf("\n\n");
- } else {
- printf("ARB_fragment_program %d ir for native fragment shader\n",
- fp->Base.Id);
- _mesa_print_program(&fp->Base);
- }
- }
+ if (unlikely(INTEL_DEBUG & DEBUG_WM))
+ brw_dump_ir(brw, "fragment", prog, &shader->base, &fp->Base);
/* Now the main event: Visit the shader IR and generate our FS IR for it.
*/
#include "main/enums.h"
#include "main/shaderobj.h"
#include "program/prog_parameter.h"
+#include "program/prog_print.h"
#include "program/program.h"
#include "program/programopt.h"
#include "tnl/tnl.h"
#include "glsl/ralloc.h"
+#include "glsl/ir.h"
#include "brw_context.h"
#include "brw_wm.h"
ralloc_free(prog_data->param);
ralloc_free(prog_data->pull_param);
}
+
+void
+brw_dump_ir(struct brw_context *brw, const char *stage,
+ struct gl_shader_program *shader_prog,
+ struct gl_shader *shader, struct gl_program *prog)
+{
+ if (shader_prog) {
+ printf("GLSL IR for native %s shader %d:\n", stage, shader_prog->Name);
+ _mesa_print_ir(shader->ir, NULL);
+ printf("\n\n");
+ } else {
+ printf("ARB_%s_program %d ir for native %s shader\n",
+ stage, prog->Id, stage);
+ _mesa_print_program(prog);
+ }
+}
void
brw_stage_prog_data_free(const void *prog_data);
+void
+brw_dump_ir(struct brw_context *brw, const char *stage,
+ struct gl_shader_program *shader_prog,
+ struct gl_shader *shader, struct gl_program *prog);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
if (prog)
shader = (brw_shader *) prog->_LinkedShaders[MESA_SHADER_VERTEX];
- if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
- if (prog) {
- printf("GLSL IR for native vertex shader %d:\n", prog->Name);
- _mesa_print_ir(shader->base.ir, NULL);
- printf("\n\n");
- } else {
- printf("ARB_vertex_program %d for native vertex shader\n",
- c->vp->program.Base.Id);
- _mesa_print_program(&c->vp->program.Base);
- }
- }
+ if (unlikely(INTEL_DEBUG & DEBUG_VS))
+ brw_dump_ir(brw, "vertex", prog, &shader->base, &c->vp->program.Base);
vec4_vs_visitor v(brw, c, prog_data, prog, shader, mem_ctx);
if (!v.run()) {
struct brw_shader *shader =
(brw_shader *) prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
- if (unlikely(INTEL_DEBUG & DEBUG_GS)) {
- printf("GLSL IR for native geometry shader %d:\n", prog->Name);
- _mesa_print_ir(shader->base.ir, NULL);
- printf("\n\n");
- }
+ if (unlikely(INTEL_DEBUG & DEBUG_GS))
+ brw_dump_ir(brw, "geometry", prog, &shader->base, NULL);
/* Compile the geometry shader in DUAL_OBJECT dispatch mode, if we can do
* so without spilling. If the GS invocations count > 1, then we can't use