Created attachment 121740 [details]
Assertion that also shows the problem.
For reference, use 'git blame src/mesa/drivers/common/meta_blit.c 9e30d66b'. Assume the blit is an MSAA-MSAA blit from a GL_TEXTURE_2D_MULTISAMPLE surface with base type GL_INT.
Line 294 sets dst_is_msaa true.
Line 313 sets shader_index to BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY.
Line 339 increments shader_index by 5, and it is now BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE.
Similar problems exist for GL_TEXTURE_2D_MULTISAMPLE_ARRAY blits. You really only notice this problem is a blit of one kind is followed by a blit of a kind that conflicts.
We should have piglit tests for this.
I noticed this because, while I was making other changes, I added an assertion like the one in the attachment. Surely dst_is_msaa must be false when doing a resolve blit. Alas.