struct brw_fragment_program {
struct gl_fragment_program program;
GLuint id; /**< serial no. to identify frag progs, never re-used */
-
- /** for debugging, which texture units are referenced */
- GLbitfield tex_units_used;
};
struct brw_shader {
}
intel_check_front_buffer_rendering(intel);
-
- /* Make sure that the textures which are referenced by the current
- * brw fragment program are actually present/valid.
- * If this fails, we can experience GPU lock-ups.
- */
- {
- const struct brw_fragment_program *fp;
- fp = brw_fragment_program_const(brw->fragment_program);
- if (fp) {
- assert((fp->tex_units_used & ctx->Texture._EnabledUnits)
- == fp->tex_units_used);
- }
- }
}
assert(tex_src_target < NUM_TEXTURE_TARGETS ||
tex_src_target == TEX_TARGET_NONE);
- /* update mask of which texture units are referenced by this program */
- if (tex_src_unit != TEX_UNIT_NONE)
- c->fp->tex_units_used |= (1 << tex_src_unit);
-
memset(inst, 0, sizeof(*inst));
inst->Opcode = op;
}
c->pixel_w = src_undef();
c->nr_fp_insns = 0;
- c->fp->tex_units_used = 0x0;
/* Emit preamble instructions. This is where special instructions such as
* WM_CINTERP, WM_LINTERP, WM_PINTERP and WM_WPOSXY are emitted to