Slashdot Mirror


A Lawyer's View on the OpenGL Patent Mess

PDAJames writes "This article has an interesting take on Microsoft's claims on OpenGL technology. An IP lawyer says that Microsoft could make things difficult for OpenGL if they feel like it, basically. "

1 of 339 comments (clear)

  1. OpenGL is very vulnerable to stuff like this... by kabir · · Score: 5, Informative

    ... and it doesn't take MS to cause problems. The general consensus amongst developers who use the more advanced OGL features (pixel and fragment shaders/programs, etc.) is that things are currently a mess.

    OpenGL is comprised of a central body of standard functionality which _must_ be implemented in order to use the name OpenGL. Additionally there's an extension mechanim which allows IHVs (like NVidia, ATI, etc.) to implement their own funcitonality which isn't currently a part of the core standard. That's how we have Fragment/Pixel shaders/programs today, as IHV extensions from NVidia and ATI. This system tends to work pretty well, but you start to get into problems with the interface. Essentially what happens is that all the IHVs decide that they need to do something along the lines of vertex programs (a way to manipulated verticies after they have been passed to the GPU, more or less), which is true. It's a cool feature any everyone likes it. Since they're being implemented as IHV extensions they're not standardized at all, so if you want to use a vertex program from NVidia you have to use their vertex program assembly language, but if you want to accomplish the same thing on an ATI card you have to use _their_ vertex program assembly (which, by the by, tends to follow a completely different model than NVidia), ad naseum.

    Naturally all of this is a pain in the ass for developers. You now not only have to have different rendering paths for the various combinations of available extensions, but you have to write the same routines in drastically different languages to support a given set of functions.

    Now getting all of this into a standard extension to the core API is supposed to solve some of these problems, but the IHVs aren't totally in favour of that as they then lose some product differentiation/control/etc. Mind you, this bit is speculation and observation, I don't actually know what the IHVs are thinking, but history shows that they sometimes have trouble working together ;) In any case, there's been a lot of stalling over this issue due to that sort of crap as well.

    And it's exactly these kinds of disagreements that are holding up OpenGL 2.0, which is supposed to directly address many of these problems. NVidia, for instance, has CG, their high level shading language. CG can be compiled down to their proprietry shader code (for use with NV_* extensions on NVidia cards) and, _in theory_ down to the proprietary code for other cards. However, for that to actually work ATI, etc. need to create so called "profiles" which allow the CG compiler to do it's thing. Clearly NVidia wants some degree of control/name recognition/whatever here... in the case where CG takes off you'd need to get your dev tools from NVidea regardless of which cards you're targeting. Now this idea is in direction competition with the OpenGL 2.0 proposal, which gives much of the same functionality but via a standard set of interfaces that replace current IHV proprietary code rather than a compiler ship on the top. Natrually this makes NVidia a little less enthusiastic about OpenGL 2.0 in it's current (proposed) form.

    And on, and on, and on.

    Right about now DX 9 (really the D3D componant...) is starting to look pretty damn good to a lot of us. It's got standard interfaces for pixel shading, etc. that just work with the various cards, it's a much improved API from it's early days, and given all the extension thrash it's much easier to write clean, readable code under D3D than OpenGL anymore.

    Of course you're screwed if you need to port, but that's the plan, right?

    The point of all this is simply that while MS is certainly doing their part to muck about with OpenGL (like not updating the damn dev tools since OpenGL 1.1!!!) they're not alone in that hobby. IHV squabbles have always been an issue in that area, and MS' best tactic to date has been to take advantage of the slowness of the ARB (often arising from IHV squabbling) and run right on by with their own API. So their adding to the infighting isn't really that much of a change to the situation, as I see it.

    --
    Behold the Power of Cheese!