void rc_pair_schedule(struct radeon_compiler *cc, void *user) { struct schedule_state s; struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; struct rc_instruction * inst = c->Base.Program.Instructions.Next; memset(&s, 0, sizeof(s)); s.C = &c->Base; while(inst != &c->Base.Program.Instructions) { struct rc_instruction * first; if (is_controlflow(inst)) { inst = inst->Next; continue; } first = inst; while(inst != &c->Base.Program.Instructions && !is_controlflow(inst)) inst = inst->Next; DBG("Schedule one block\n"); schedule_block(c, first, inst); } }
void rc_pair_schedule(struct radeon_compiler *cc, void *user) { struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; struct schedule_state s; struct rc_instruction * inst = c->Base.Program.Instructions.Next; unsigned int * opt = user; memset(&s, 0, sizeof(s)); s.Opt = *opt; s.C = &c->Base; if (s.C->is_r500) { s.CalcScore = calc_score_readers; } else { s.CalcScore = calc_score_r300; } s.max_tex_group = debug_get_num_option("RADEON_TEX_GROUP", 8); while(inst != &c->Base.Program.Instructions) { struct rc_instruction * first; if (is_controlflow(inst)) { inst = inst->Next; continue; } first = inst; while(inst != &c->Base.Program.Instructions && !is_controlflow(inst)) inst = inst->Next; DBG("Schedule one block\n"); memset(s.Temporary, 0, sizeof(s.Temporary)); s.TEXCount = 0; schedule_block(&s, first, inst); if (s.PendingTEX) { s.PrevBlockHasTex = 1; } } }