On 10.10.2017 13:15, Gert Wollny wrote:

+   os << "[";
+   if (reg.reladdr)
+      os << *reg.reladdr << "+";
+   if (reg.reladdr2)
+      os << *reg.reladdr2 << "+";

This isn't how that works. reladdr2 is the relative address for 2D
register accesses; see has_index2 and index2D.

Actually, I don't like this part of the dump at all: it is not known
from the register information I can access here whether an address
which address register index goes where and if an address register is
used at all. - and documentation on the issue is also very sparse. From
the code accessing has_index2 I figured that the dump should look
something like this: ?

template <typename st_reg>
void dump_reg_access(std::ostream& os, const st_reg& reg)
{
    os << tgsi_file_names[reg.file];
    if (reg.file == PROGRAM_ARRAY)
       os << "(" << reg.array_id << ")";

    os << "[";
    if (reg.reladdr)
       os << *reg.reladdr << "+";
    os << reg.index << "]";

    if (reg.has_index2) {
       os << "[";
       if (reg.reladdr2)
          os << *reg.reladdr2 << "+";
       os << reg.index2D << "]";
    }

They should be the other way around, actually. index2D/reladdr2 are used for determining which constant buffer to use or which input/output vertex to reference in geometry/tessellation shaders. Those indices come first.

About the fact that reladdr can be present but it's not clear which register is actually used for the reladdr: totally agreed that this is pretty horrible code.

Perhaps a separate cleanup patch is in order where reladdr and reladdr2 are appropriately modified when ARL instructions are generated.

Cheers,
Nicolai


}



Besides, you're not actually printing reg.index.

Same for when you're printing the destination.

This I was already about to fix.

Many thanks for you comments (also the other ones).

Best,
Gert




--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to