Yes, the GLSL spec allows this. I confirmed with the spec editor. This sentence on page 27 of the GLSL 440 spec:
They [opaque values] can only be declared as function parameters or uniform-qualified variables.

doesn't just mean basic-type variables, it means any variable, including structs.

very cool! thanks again for the clarification.

Originally Posted by GClements

Are you confusing "uniform block" with "struct"?

Opaque types cannot be used in uniform blocks, but I see no such prohibition on structs.

nope, i meant structs that are used as uniforms. i use(d) them to pack samplers together and to instantiate multiple such structs with samplers inside.

i just installed the 326.58 and still get the error:error C7554: OpenGL requires sampler variables to be explicitly declared as uniform

We have published an updated version of the Windows OpenGL 4.4 beta drivers to version 326.77. Linux updates will follow shortly. You can download them from the usual place:https://developer.nvidia.com/opengl-driver

This update fixes the following bugs reported in this forum thread:Comment #13: main() terminated prematurely
Comment #22: More problems with samplers in structs

Also fixed:
Unable to allocate a DEPTH_COMPONENT16 sparse texture
Rendering corruption with sparse depth textures
Fix system instability when using multiple sparse textures

Thanks for this fast bug fixing!
Now some questions hope you can answer some of them:
I found references about NVX_shader_thread_group and NVX_shader_thread_shuffle and on twitter Pat Brown said that he thought were already implemented on driver.
Are specs coming soon jointly for also new WGL_NV_delay_before_swap extension?

Release notes of new 325 drivers mention TXAA support on OpenGL.. I obtained TXAA SDK (v2.1) contacting Lottes.. question is if TXAA on OpenGL is already present for Linux 325 driver or Windows driver only?.. if Linux support is present I would like to test but my TXAA SDK libs aren't compiled for Linux..Also we get now GL_NVX_nvenc_interop extension reported but current NVENC 2.0 SDK June 2013 release on web doesn't mention support yet for NVENC encoding from OGL buffers/texes (only CUDA pointers and DX support presently).. any clue?
Latest Intel drivers seems to ship with new exts:
GL_INTEL_fragment_shader_span_sharing
Lottes commented "GL_INTEL_fragment_shader_span_sharing might be sharing across the threads in a 2x2 pixel quad?"Eric Penner's “Shader Amortization using Pixel Quad Message Passing" (Gpu Pro 2) talks about some usage casesIn case Fermi/Kepler HW supports that is NV interested on implementing/exposing this functionality..
GL_INTEL_compute_shader_lane_shift That also seems like new warp SHUFL intrustion in PTX parlance in Kepler might NV also expose that?

The OpenGL 4.4 beta drivers for both Windows and Linux have been updated. The new Windows version is 326.98 and the new Linux version is 325.05.13. The major fix in these new drivers is a regression in the functionality of atomics. New drivers can be found in the usual place:https://developer.nvidia.com/opengl-driver

There is a known issue with layered rendering to sparse textures, notably cube maps, that we're currently investigating. A fix for this should be available next week.

you know, you probably should've posted only the actual define combination, that causes problems and cut out all irrelevant code. i highly doubt
anyone will read through this garbage(i hope you understand, why is it garbage and there's some unavoidable reason for it to be like that, although i don't think it is possibile to justify such thing).