[3/5] WineD3D: Unroll loops in ARB if GL_NV_vertex_program2_option is not supported
James Mckenzie
jjmckenzie51 at earthlink.net
Sat Jun 6 17:48:21 CDT 2009
Stefan Dösinger <stefan at codeweavers.com> wrote about [3/5] WineD3D: Unroll loops in ARB if GL_NV_vertex_program2_option is not supported
Stefan:
Could this not a be a function:
+ for(i = 0; i < MAX_CONST_I; i++)
+ {
+ if(int_skip & (1 << i))
+ {
+ args->loop_ctrl[i][0] = 0;
+ args->loop_ctrl[i][1] = 0;
+ args->loop_ctrl[i][2] = 0;
+ }
+ else
+ {
+ args->loop_ctrl[i][0] = stateblock->pixelShaderConstantI[i * 4];
+ args->loop_ctrl[i][1] = stateblock->pixelShaderConstantI[i * 4 + 1];
+ args->loop_ctrl[i][2] = stateblock->pixelShaderConstantI[i * 4 + 2];
+ }
+ }
Also, it looks like you did not count correctly:
+ if(vshader)
+ {
+ /* Count and aL start value are unsigned */
+ ret[0] = priv->cur_vs_args->loop_ctrl[idx][0];
+ ret[1] = priv->cur_vs_args->loop_ctrl[idx][1];
+ /* The step/stride is signed */
+ ret[2] = ((char) priv->cur_vs_args->loop_ctrl[idx][3]);
+ }
+ else
+ {
+ ret[0] = priv->cur_ps_args->loop_ctrl[idx][0];
+ ret[1] = priv->cur_ps_args->loop_ctrl[idx][1];
+ ret[2] = ((char) priv->cur_ps_args->loop_ctrl[idx][3]);
+ }
+ return ret;
A little explanation might help here.
James McKenzie
More information about the wine-devel
mailing list