Keith Whitwell wrote: > On Mon, 2010-01-04 at 09:47 -0800, Brian Paul wrote: >> Christoph Bumiller wrote: >>> On 31.12.2009 12:05, Keith Whitwell wrote: >>>> Luca, >>>> >>>> This is an impressive body of work. I want to give Jose a chance to >>>> review the EGL/GLX extensions before pushing, but in the meantime I hope >>>> it's ok if I make a couple of quick suggestions/requests: >>>> >>>> Firstly, we're going to be evolving the TGSI instruction set a fair bit >>>> over the coming months to catch up with newer GLSL versions, CL, etc. >>> At that point I'd like to ask if, when all the nice memory spaces >>> are introduced to TGSI, these nasty indirect accesses to TEMP >>> will go away. >>> >>> They are really painful to implement because you cannot index >>> registers on nv50+ and thus we'd have to regard TEMP as memory. >>> And since there is no information in the TGSI tokens about >>> what TEMPs constitute an array, we'd have to store and load >>> all of them, which would be quite costly. >>> >>> So I was hoping that, optionally (older cards without actual memory >>> won't like it I suppose), the compiler can just generate the >>> appropriate stores and loads. >> One possibility is to define a new "register" file such as "MEM" that >> would be just like TEMP but would be used for indirectly addressed r/w >> storage (arrays). >> >> This would give optimizers more information about how storage is used >> and allow for better register allocation. Some of the program >> optimization code in Mesa currently gives up if it discovers that temp >> registers are indirectly addressed. > > I think this is pretty much equivalent to restricting indexing to > defined ranges of indexable temporaries. I'm guessing the way that > would work is we'd say something like: > > DECL OUT[0] > DECL ADDR[0] > DECL INDEXABLE_TEMP V[2][0..10] > > # Populate temporaries > MOV V[2][0], FOO > MOV V[2][1], BAR > > # Extract something with dynamic indexing: > MOV OUT[0], V[2][ADDR[0].x] > END > > I think that's pretty much the same as you're proposing.
Yes, though I think the MEM convention would be easier to work with in the GLSL compiler and gl_program data structures/code. BTW, I'm not completely sure I understand the INDEXABLE_TEMP syntax in your example. -Brian ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev