http://bugs.winehq.org/show_bug.cgi?id=30232
--- Comment #14 from Henri Verbeet hverbeet@gmail.com 2012-04-03 08:39:08 CDT --- (In reply to comment #12)
Just to make things clear. The hack was rewriting value from GL_MAX_PROGRAM_ENV_PARAMETERS_ARB to value from GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB.
No. The hack replaced the values from MAX_VERTEX_UNIFORM_COMPONENTS and MAX_FRAGMENT_UNIFORM_COMPONENTS with the vertex / fragment MAX_PROGRAM_NATIVE_PARAMETERS. It did this because as the link in comment 11 shows MacOS pretty much just always returns 4096 for the number of supported uniform components, regardless of what the hardware can actually do. For example, the maximum pre-GF8 and pre-R600 hardware can do is 256 constants, which would give you 1024 uniform components. On the other hand, something like a HD 4850 actually supports 16 constant buffers of 4096 constants (-> 16384 uniform components) each.
A 256 constant limit on current Radeon hardware doesn't make a lot of sense. The only thing that would be sort of close would be if the driver used the 256 (legacy) cfile constants instead of the kcache mechanism, but cfile was removed with Evergreen and wouldn't even work on the HD 6750M that bug 30168 was originally reported for.