June 10, 2009
10:20 p.m.
+ if(vshader) + { + struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; + struct list *e = list_head(&priv->control_frames); + struct control_frame *control_frame = LIST_ENTRY(e, struct control_frame, entry); + + if(priv->loop_depth > 1) shader_addline(buffer, "PUSHA aL;\n"); + + shader_addline(buffer, "ARLC aL, %s.xywz;\n", src_name); + shader_addline(buffer, "BRA loop_%u_end (LE.x);\n", control_frame->loop_no); + shader_addline(buffer, "loop_%u_start:\n", control_frame->loop_no); + }
Nested loops still don't work here. You need NV_vertex_program3 in order to use PUSHA and POPA. - Allan