Hi,

Mesa i965 instruction scheduler latency values look weird.

For example:
----------------------
void
schedule_node::set_latency_gen7(bool is_haswell)
{
   switch (inst->opcode) {
...
   case SHADER_OPCODE_UNTYPED_SURFACE_READ:
   case SHADER_OPCODE_UNTYPED_SURFACE_WRITE:
   case SHADER_OPCODE_TYPED_SURFACE_READ:
   case SHADER_OPCODE_TYPED_SURFACE_WRITE:
      /* Test code:
...
       * Running it 100 times as fragment shader on a 128x128 quad
       * gives an average latency of 583 cycles per surface read,
       * standard deviation 0.9%.
       */
      latency = is_haswell ? 300 : 600;
      break;
...
schedule_node::schedule_node(backend_instruction *inst,
                             instruction_scheduler *sched)
{
...
   if (!sched->post_reg_alloc)
      this->latency = 1;
   else if (devinfo->gen >= 6)
      set_latency_gen7(devinfo->is_haswell);
   else
      set_latency_gen4();
}
----------------------
(I.e. for data reads use 300 on HSW, and 600 on everything else GEN6+...)


Are the tests referred in comments still available somewhere?

I'd like to run them to check from performance counters whether they're limited by what the tests expect.


        - Eero
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to