Image variable capabilities in modern GL hardware

I don’t have access to any GL 4.x hardware, so I was curious about something. The OpenGL minimum for the number of atomic counter and image variables requires implementations to allow at least 8 atomic counter variables and image variables. But only in the fragment shader; in other shader stages, the minimum requirement is 0, thus letting implementations disallow their use in those stages.

Is that a common thing for 4.x-class hardware to do? Or can you reasonably expect 4.x hardware to allow similar image/atomic counter operations in non-fragment shader stages?

My GTX 580 say is has 16384 atomic counters for each stage and a total of 81920 with 8 buffers for each stage and a total of 40

What about image variables?

Max image uniforms is 8 for each stage and combines 40. max image units is 8 and combines image units and fragment outputs is 16

Not bad. Thanks.

I wonder what the equivalent AMD hardware provides.

My ATI 5800 has 8 atomic buffers and counters in each stage with a combined max of 9. When I tried to retrieve GL_MAX_VERTEX_IMAGE_UNIFORMS etc I get an invalid value error.

Edit: I just had a look at the Radeon 6350. Even there you got 8 image uniform max per stage but also just 8 max combined uniforms. The same goes for atomic counters and atomic counter buffers: 8 max per stage, 8 max combined.

Although I’d be hesitant to state that you can commonly expect this behavior to be common among all GL 4.x class hardware, having access on very low-end models seems to be a good indication that in fact you might be able to.

It’s a shame Intel doesn’t go beyond GL 4.0.

Edit 2: Ok, somethings definitely not right. My HD 6870 reports the same numbers as above. If that is actually the case, it’s a joke compared to the 580.