Hi and merry chrismas everyone. I have updated my UBO patch set to follow some recommandations from ML. I splitted some patches (and for some of them, added a longer description). The last three ones needs a bit more polishing though, and there might be some leftover debug code or old comments that I missed when cleaning.
This patch set passes my 4 piglit tests (submitted earlier) on softpipe. These piglit tests checks standard layout conformance, correct type report, and several draw situations : simple variable dereference, record dereference, direct addressing array dereference and indirect addressing array dereference for draw_test, and structure/array copy in draw_several_ubo_test (as well as checking that several UBO are well supported). Some items are still left to claim complete spec conformance : - i965 dri support. I checked that the driver builds, and it seems not to suffer from regression with these patches (I did a quick test with my snb setup). Support for llvmpipe, r600g and vmwgfx gallium drivers. I don't have any expererience in low level hardware programmation ... - Matrix support at code generation. - API queries on classic uniform. - Queries on program that failed to link. The spec says that API querying should work on program that fails to link, and gives the example of a program that has too many uniforms for the linker. However the spec is really vague on the behavior the API should have in every case (what happens if UBO definition does not match in separate shaders for instance ?) - Support for shared and packed layout. Strictly speaking, having just std140 layout is spec compliant, as these 2 additionnals layout are implementation specific, but the spec introduces these 2 additionnals layout for optimisation purpose, so it would be nice to use these layouts to have some kind of uniform packing. - It is out of spec, but many sample code uses this feature : array of UBO and UBO instanciation. The official way of declaring a UBO is layout(...) uniform OpenGLName { ... }; but there were 2 others ways in draft of the spec : layout(...) uniform OpenGLName { ... } GLSLName; layout(...) uniform OpenGLName { ... } GLSLName[n]; that allowed following shader codes to dereference UBO as if it was a struct or an array. These features are said to be deferred to another extension in the spec FAQ but even opengl.org wiki mentions UBO instanciation and array of UBO as possible way of declaration. Regards, Vincent _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev