How do you propose defining the semantics for e.g. loading a 16-bit value from a constbuf/ssbo? Would those get separate instructions?
On Tue, Aug 22, 2017 at 1:10 PM, Marek Olšák <mar...@gmail.com> wrote: > 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev