Brian Paul pisze: > Michał Król wrote: > >> The LOOP/ENDLOOP opcodes have been loosely defined in gallium and the >> de-facto definition had redundant semantics to BGNLOOP2/ENDLOOP2. >> >> This patch documents this pair to closely match GL_NV_fragment_program2 >> LOOP/ENDLOOP behaviour. >> >> Fixes into the code will follow after this has been accepted. >> >> >> diff --git a/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt >> b/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt >> index a3f4947..7b3e419 100644 >> --- a/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt >> +++ b/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt >> @@ -667,7 +667,15 @@ TGSI Instruction Specification >> >> 1.9.8 LOOP - Loop >> >> - TBD >> + dst.x = floor(src.x) >> + dst.y = floor(src.y) >> + dst.z = floor(src.z) >> + >> + if (dst.y <= 0) >> + pc = [matching ENDLOOP] + 1 >> + endif >> + >> + Note: The destination must be a loop register. >> >> >> 1.9.9 REP - Repeat >> @@ -687,7 +695,14 @@ TGSI Instruction Specification >> >> 1.9.12 ENDLOOP - End Loop >> >> - TBD >> + dst.x = dst.x + dst.z >> + dst.y = dst.y - 1.0 >> + >> + if (dst.y > 0) >> + pc = [matching LOOP instruction] >> > > Fix: pc = [matching LOOP instruction] + 1 > > > Thanks.
>> + endif >> + >> + Note: The destination must be a loop register. >> > > I think you have dst.x and dst.y mixed up in a few places there. The > NV spec says .x is the loop count. > > That was a deliberate move to have the index in an .x component. The .y and .z components should be not accessible to the application. > In GL_NV_fragment_program2.txt the loop count/index/incr are hidden > values which can't be accessed by other instructions inside the loop. > The index can be accessed as A0.x. A new LOOP register file should be introduced, with only the .x component (index) being accessible. > Also, the loop count must be a constant, etc. Are we imposing those > policies here too? If so, that should be documented. > > Yes, we should do it. > I think I'd prefer to rename the "simple" LOOP2/ENDLOOP2 instructions > as LOOP/ENDLOOP and call the above functions LOOP_COUNT/ENDLOOP_COUNT. > > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Mesa3d-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
