A binding point is an uint that is referred by BindBuffer* and UniformBlockBinding API function. A UBO in shader will fetch data in the buffer that holds the same binding point.
Note that this patch should be reworked : it currently uses a static array to hold binding points, and does not take care of hardware capabilities. However it allows to test the whole patch. --- src/mesa/main/config.h | 4 ++++ src/mesa/main/mtypes.h | 12 ++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index 7b7740e..1c4c810 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -357,5 +357,9 @@ */ #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1) +/** + * UBO Variables + */ +#define MAX_UBO_COUNT 8 #endif /* MESA_CONFIG_H_INCLUDED */ diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index c3f8956..3ac5c2f 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1653,6 +1653,15 @@ struct gl_array_attrib struct gl_buffer_object *ArrayBufferObj; }; +/** + * UBO state + */ +struct gl_ubo_attribs +{ + struct gl_buffer_object *UniformObj; + struct gl_buffer_object *BindingPoint[MAX_UBO_COUNT]; + unsigned UBOIndexes[MAX_UBO_COUNT]; +}; /** * Feedback buffer state @@ -3402,6 +3411,9 @@ struct gl_context struct gl_pixelstore_attrib DefaultPacking; /**< Default params */ /*@}*/ + /** \name Attributes for UBO */ + struct gl_ubo_attribs UniformBufferObject; + /** \name Other assorted state (not pushed/popped on attribute stack) */ /*@{*/ struct gl_pixelmaps PixelMaps; -- 1.7.7 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev