Hi, I'd like to discuss 16-bit float and integer support in TGSI. I'm proposing this:
struct tgsi_instruction { unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */ unsigned NrTokens : 8; /* UINT */ unsigned Opcode : 8; /* TGSI_OPCODE_ */ unsigned Saturate : 1; /* BOOL */ unsigned NumDstRegs : 2; /* UINT */ unsigned NumSrcRegs : 4; /* UINT */ unsigned Label : 1; unsigned Texture : 1; unsigned Memory : 1; unsigned Precise : 1; - unsigned Padding : 1; + unsigned HalfPrecision : 1; }; There won't be any 16-bit TEMPs in TGSI, but each instruction will have the HalfPrecision flag, which is a hint for drivers that they can use a 16-bit opcode. Even texture, load, and store instructions can set HalfPrecision, which means they can accept and return 16-bit values. The catch is that drivers will have to insert 16-bit <-> 32-bit conversions manually, because they won't be present in TGSI. The advantage is that we don't have to add 200 new opcodes for the 3 new 16-bit types. What do you think? Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev