mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 17:10:11 +01:00
i965/fs: Move the old gen4 bspec-based scheduling info to a helper func.
For gen7 everything changes, and we have actual information on latency. Acked-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
461a29783a
commit
6255fc7426
1 changed files with 41 additions and 33 deletions
|
|
@ -67,41 +67,11 @@ public:
|
|||
this->parent_count = 0;
|
||||
this->unblocked_time = 0;
|
||||
|
||||
int chans = 8;
|
||||
int math_latency = 22;
|
||||
|
||||
switch (inst->opcode) {
|
||||
case SHADER_OPCODE_RCP:
|
||||
this->latency = 1 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_RSQ:
|
||||
this->latency = 2 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_INT_QUOTIENT:
|
||||
case SHADER_OPCODE_SQRT:
|
||||
case SHADER_OPCODE_LOG2:
|
||||
/* full precision log. partial is 2. */
|
||||
this->latency = 3 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_INT_REMAINDER:
|
||||
case SHADER_OPCODE_EXP2:
|
||||
/* full precision. partial is 3, same throughput. */
|
||||
this->latency = 4 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_POW:
|
||||
this->latency = 8 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_SIN:
|
||||
case SHADER_OPCODE_COS:
|
||||
/* minimum latency, max is 12 rounds. */
|
||||
this->latency = 5 * chans * math_latency;
|
||||
break;
|
||||
default:
|
||||
this->latency = 2;
|
||||
break;
|
||||
}
|
||||
set_latency_gen4();
|
||||
}
|
||||
|
||||
void set_latency_gen4();
|
||||
|
||||
fs_inst *inst;
|
||||
schedule_node **children;
|
||||
int *child_latency;
|
||||
|
|
@ -112,6 +82,44 @@ public:
|
|||
int latency;
|
||||
};
|
||||
|
||||
void
|
||||
schedule_node::set_latency_gen4()
|
||||
{
|
||||
int chans = 8;
|
||||
int math_latency = 22;
|
||||
|
||||
switch (inst->opcode) {
|
||||
case SHADER_OPCODE_RCP:
|
||||
this->latency = 1 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_RSQ:
|
||||
this->latency = 2 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_INT_QUOTIENT:
|
||||
case SHADER_OPCODE_SQRT:
|
||||
case SHADER_OPCODE_LOG2:
|
||||
/* full precision log. partial is 2. */
|
||||
this->latency = 3 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_INT_REMAINDER:
|
||||
case SHADER_OPCODE_EXP2:
|
||||
/* full precision. partial is 3, same throughput. */
|
||||
this->latency = 4 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_POW:
|
||||
this->latency = 8 * chans * math_latency;
|
||||
break;
|
||||
case SHADER_OPCODE_SIN:
|
||||
case SHADER_OPCODE_COS:
|
||||
/* minimum latency, max is 12 rounds. */
|
||||
this->latency = 5 * chans * math_latency;
|
||||
break;
|
||||
default:
|
||||
this->latency = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
class instruction_scheduler {
|
||||
public:
|
||||
instruction_scheduler(fs_visitor *v, void *mem_ctx, int grf_count,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue