[2/5] WineD3D: Implement loops with the NV extensions

Allan Tong actong88 at gmail.com
Wed Jun 10 17:20:46 CDT 2009


> +    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



More information about the wine-devel mailing list