GLSlang and resource virtualization

Can anyone tell me if GLSlang is using virtualization to enable, among other things, programs of arbitrary length? I remember hearing this, but I can find any information to confirm it.

GLSlang doesn’t have any limits on the number of instructions in a vertex or a fragment shader so in a way we can speak of virtualization of ressources. But if by this term you’re implying automatic multipass when your program exceeds hardware limits then it’s not the case.

Other technologies like F-buffer are suppose to virtualize the resources and do auto-multipass.

I think GLSL doesn’t have the requirement to virtualize anything.

This will be the next new addition to the 3D scene but who knows when it will happen.

The language is spec’d to allow resource virtualization, but as far I’m aware nobody has actually shipped an implementation that supports this. It’s harder than it sounds.

-S.

When you say that no current driver supports this, will a program with too many instruction simply not run at all or will run but extremely slowly?

A glslang compiler/linker is allowed to fail due to too many instructions. So, you will get a compiler/linker error.

Oh sorry, I meant to say it will be the next BIG addition, because I wanted to emphasize that it will be a significant advancement.

And this is one of the reasons I made my post about Ashli (much further down) because it converts GLSL to ARBvp+fp (and vp?, ps2.0)
and does multipass.

Originally posted by simongreen:
[b]The language is spec’d to allow resource virtualization, but as far I’m aware nobody has actually shipped an implementation that supports this. It’s harder than it sounds.

-S.[/b]

Simon -

ATI’s implementation supports resource virtualization.

BTW, there is only limitted resource virtualization with the OpenGL Shading Language and related extensions.

The resources virtualized are number of temporaries and number of instructions.

The resources not virtualized are number of vertex texture units, number of fragment texture units, number of total texture units, number of active vertex attributes, number of active interpolators,
size of active uniform storage. All of these resources have hard physical limits.

-mr. bill

Originally posted by Korval:
A glslang compiler/linker is allowed to fail due to too many instructions. So, you will get a compiler/linker error.

Early implementations failed to compile, but early implementations were not conformant. Our implementation issues a warning in the link infolog of shaders that exceed HW physical resources.

And just to set expectations correctly, currently our implementation shades significantly slower if a shader exceeds HW physical resources.

-mr. bill

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.