Does the Spec. allow the update of output variables?
For Example in a variant for point-normal triangulation I use this code:
tcw[gl_InvocationID].controlPoints[0] = vsm[gl_InvocationID].mdPosition + edge / 3.0f;
tcw[gl_InvocationID].controlPoints[0] = tngPrj(tcw[gl_InvocationID].controlPoints[0],
vsm[gl_InvocationID].mdPosition,
vsm[gl_InvocationID].mdNormal);
During tests on different drivers, I found that I have to rewrite the code like:
vec3 va = vsm[gl_InvocationID].mdPosition + edge / 3.0f;
va = tngPrj(va,
vsm[gl_InvocationID].mdPosition,
vsm[gl_InvocationID].mdNormal);
tcw[gl_InvocationID].controlPoints[0] = va;
I’m not sure if I should mark this change as “bug” and regularly test it against new driver versions.