Got a few questions about instruction co-issue on the R300 when using PS2.0. Since you can't explicitly co-issue instructions when using PS2.0, I'm guessing the drivers will optimize the 'trivial' cases for co-issue, such as
Now, I'm wondering when exactly Co-issue does occur. Does it occur between any vector and scaler instruction, regardless of the write masking. So does this co-issue?
If it does, then does replication make a difference, such as would the following co-issue?
Finally, if that does co-issue can the vector pipe be used as a second pseudo scaler pipe so the following would co-issue?
If no one knows, I'll probably investigate this myself. While it's not important, it could still be something useful to know when hand optimizing pixel shaders.
Code:
mul r1.rgb, r2, r3
add r4.a, r5, r6
Now, I'm wondering when exactly Co-issue does occur. Does it occur between any vector and scaler instruction, regardless of the write masking. So does this co-issue?
Code:
mul r1.rba, r2, r3
add r4.g, r5, r6
If it does, then does replication make a difference, such as would the following co-issue?
Code:
mul r1.rba, r2.g, r3.a
add r4.g, r5.r, r6.a
Finally, if that does co-issue can the vector pipe be used as a second pseudo scaler pipe so the following would co-issue?
Code:
mul r1.r, r2.g, r3.a
add r4.g, r5.r, r6.a
If no one knows, I'll probably investigate this myself. While it's not important, it could still be something useful to know when hand optimizing pixel shaders.