Re: [Mesa-dev] [PATCH 05/16] main: Added entry point for glTransformFeedbackBufferBase

2015-02-24 Thread Laura Ekstrand
Looks good to me.

Reviewed-by: Laura Ekstrand la...@jlekstrand.net

On Mon, Feb 23, 2015 at 6:47 AM, Martin Peres martin.pe...@linux.intel.com
wrote:

 v2: Review from Laura Ekstrand
 - give more helpful error messages
 - factor the lookup code for the xfb and objBuf
 - replace some already-existing tabs with spaces
 - add comments to explain the cases where xfb == 0 or buffer == 0
 - fix the condition for binding the transform buffer or not

 v3: Review from Laura Ekstrand
 - rename _mesa_lookup_bufferobj_err to
   _mesa_lookup_transform_feedback_bufferobj_err and make it static to
 avoid a
   future conflict
 - make _mesa_lookup_transform_feedback_object_err static

 v4: Review from Laura Ekstrand
 - add the pdf page number when quoting the spec
 - rename some of the symbols to follow the public/private conventions

 v5: Review from Laura Ekstrand
 - properly rename some of the symbols to follow the public/private
 conventions
 - fix some alignments
 - add quotes around a spec citation
 - add back a newline I accidentally deleted
 - add spaces around the ternary operator usages

 Signed-off-by: Martin Peres martin.pe...@linux.intel.com
 ---
  src/mapi/glapi/gen/ARB_direct_state_access.xml |   6 ++
  src/mesa/main/bufferobj.c  |   9 +-
  src/mesa/main/tests/dispatch_sanity.cpp|   1 +
  src/mesa/main/transformfeedback.c  | 138
 +++--
  src/mesa/main/transformfeedback.h  |  10 +-
  5 files changed, 129 insertions(+), 35 deletions(-)

 diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml
 b/src/mapi/glapi/gen/ARB_direct_state_access.xml
 index 15b00c2..35d6906 100644
 --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
 +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
 @@ -14,6 +14,12 @@
param name=ids type=GLuint * /
 /function

 +   function name=TransformFeedbackBufferBase offset=assign
 +  param name=xfb type=GLuint /
 +  param name=index type=GLuint /
 +  param name=buffer type=GLuint /
 +   /function
 +
 !-- Texture object functions --

 function name=CreateTextures offset=assign
 diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
 index b372c68..96d43c8 100644
 --- a/src/mesa/main/bufferobj.c
 +++ b/src/mesa/main/bufferobj.c
 @@ -3575,8 +3575,9 @@ _mesa_BindBufferRange(GLenum target, GLuint index,

 switch (target) {
 case GL_TRANSFORM_FEEDBACK_BUFFER:
 -  _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
 -offset, size);
 +  _mesa_bind_buffer_range_transform_feedback(ctx,
 +
  ctx-TransformFeedback.CurrentObject,
 + index, bufObj, offset,
 size);
return;
 case GL_UNIFORM_BUFFER:
bind_buffer_range_uniform_buffer(ctx, index, bufObj, offset, size);
 @@ -3640,7 +3641,9 @@ _mesa_BindBufferBase(GLenum target, GLuint index,
 GLuint buffer)

 switch (target) {
 case GL_TRANSFORM_FEEDBACK_BUFFER:
 -  _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
 +  _mesa_bind_buffer_base_transform_feedback(ctx,
 +
 ctx-TransformFeedback.CurrentObject,
 +index, bufObj, false);
return;
 case GL_UNIFORM_BUFFER:
bind_buffer_base_uniform_buffer(ctx, index, bufObj);
 diff --git a/src/mesa/main/tests/dispatch_sanity.cpp
 b/src/mesa/main/tests/dispatch_sanity.cpp
 index c37ce95..3195abb 100644
 --- a/src/mesa/main/tests/dispatch_sanity.cpp
 +++ b/src/mesa/main/tests/dispatch_sanity.cpp
 @@ -956,6 +956,7 @@ const struct function gl_core_functions_possible[] = {

 /* GL_ARB_direct_state_access */
 { glCreateTransformFeedbacks, 45, -1 },
 +   { glTransformFeedbackBufferBase, 45, -1 },
 { glCreateTextures, 45, -1 },
 { glTextureStorage1D, 45, -1 },
 { glTextureStorage2D, 45, -1 },
 diff --git a/src/mesa/main/transformfeedback.c
 b/src/mesa/main/transformfeedback.c
 index 10bb6a1..159fa62 100644
 --- a/src/mesa/main/transformfeedback.c
 +++ b/src/mesa/main/transformfeedback.c
 @@ -514,22 +514,24 @@ _mesa_EndTransformFeedback(void)
   * Helper used by BindBufferRange() and BindBufferBase().
   */
  static void
 -bind_buffer_range(struct gl_context *ctx, GLuint index,
 +bind_buffer_range(struct gl_context *ctx,
 +  struct gl_transform_feedback_object *obj,
 +  GLuint index,
struct gl_buffer_object *bufObj,
 -  GLintptr offset, GLsizeiptr size)
 +  GLintptr offset, GLsizeiptr size,
 +  bool dsa)
  {
 -   struct gl_transform_feedback_object *obj =
 -  ctx-TransformFeedback.CurrentObject;
 -
 /* Note: no need to FLUSH_VERTICES or flag NewTransformFeedback,
 because
  * transform feedback buffers can't be changed while transform
 feedback is
  * active.
  */

 -   /* The general binding point */
 -   

Re: [Mesa-dev] [PATCH 05/16] main: Added entry point for glTransformFeedbackBufferBase

2015-02-23 Thread Martin Peres

On 21/02/15 02:25, Laura Ekstrand wrote:
You still seem to be confused about the names of internal functions.  
If a function exists outside of its class, (ie. is extern-ed from a 
*.h file), it should have the _mesa in front.  If a function exists 
purely inside of a *.c file, it should be static and not have _mesa.


Since _mesa_lookup_transform_feedback_object in transformfeedback.h is 
used outside of transformfeedback.[c|h], it should have the _mesa in 
front and not be static.  In this patch, you renamed it to 
lookup_transform_feedback_object, which is incorrect.


On the other hand, the names that you gave to 
lookup_transform_feedback_object_err and 
lookup_transform_feedback_bufferobj_err are just fine because these 
functions are static and never called outside transformfeedback.c.


Wow, this patch is a pile of crap :o I wonder what I was thinking when I 
made this v4! Thanks Laura! I fixed more problems such as missing spaces 
around the ternary operator usages.




On Mon, Feb 16, 2015 at 6:13 AM, Martin Peres 
martin.pe...@linux.intel.com mailto:martin.pe...@linux.intel.com 
wrote:


v2: Review from Laura Ekstrand
- give more helpful error messages
- factor the lookup code for the xfb and objBuf
- replace some already-existing tabs with spaces
- add comments to explain the cases where xfb == 0 or buffer == 0
- fix the condition for binding the transform buffer or not

v3: Review from Laura Ekstrand
- rename _mesa_lookup_bufferobj_err to
  _mesa_lookup_transform_feedback_bufferobj_err and make it static
to avoid a
  future conflict
- make _mesa_lookup_transform_feedback_object_err static

v4: Review from Laura Ekstrand
- add the pdf page number when quoting the spec
- rename some of the symbols to follow the public/private conventions

Signed-off-by: Martin Peres martin.pe...@linux.intel.com
mailto:martin.pe...@linux.intel.com
---
 src/mapi/glapi/gen/ARB_direct_state_access.xml |  6 +
 src/mesa/main/bufferobj.c  |  9 +-
 src/mesa/main/objectlabel.c|  2 +-
 src/mesa/main/tests/dispatch_sanity.cpp|  1 +
 src/mesa/main/transformfeedback.c  | 146
+++--
 src/mesa/main/transformfeedback.h  | 13 ++-
 src/mesa/vbo/vbo_exec_array.c  |  8 +-
 7 files changed, 139 insertions(+), 46 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml
b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index 15b00c2..35d6906 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -14,6 +14,12 @@
   param name=ids type=GLuint * /
/function

+   function name=TransformFeedbackBufferBase offset=assign
+  param name=xfb type=GLuint /
+  param name=index type=GLuint /
+  param name=buffer type=GLuint /
+   /function
+
!-- Texture object functions --

function name=CreateTextures offset=assign
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 0c1ce98..86532ea 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -3546,8 +3546,9 @@ _mesa_BindBufferRange(GLenum target, GLuint
index,

switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
- _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
- offset, size);
+ _mesa_bind_buffer_range_transform_feedback(ctx,
+  ctx-TransformFeedback.CurrentObject,
+  index, bufObj, offset, size);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_range_uniform_buffer(ctx, index, bufObj,
offset, size);
@@ -3611,7 +3612,9 @@ _mesa_BindBufferBase(GLenum target, GLuint
index, GLuint buffer)

switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
- _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
+ _mesa_bind_buffer_base_transform_feedback(ctx,
+ ctx-TransformFeedback.CurrentObject,
+ index, bufObj, false);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_base_uniform_buffer(ctx, index, bufObj);
diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c
index 78df96b..19a7e59 100644
--- a/src/mesa/main/objectlabel.c
+++ b/src/mesa/main/objectlabel.c
@@ -170,7 +170,7 @@ get_label_pointer(struct gl_context *ctx,
GLenum identifier, GLuint name,
case GL_TRANSFORM_FEEDBACK:
   {
  struct gl_transform_feedback_object *tfo =
- _mesa_lookup_transform_feedback_object(ctx, name);
+lookup_transform_feedback_object(ctx, name);
  if (tfo)
 labelPtr = tfo-Label;
   }
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp
b/src/mesa/main/tests/dispatch_sanity.cpp
index bf320bf..183755f 100644

[Mesa-dev] [PATCH 05/16] main: Added entry point for glTransformFeedbackBufferBase

2015-02-23 Thread Martin Peres
v2: Review from Laura Ekstrand
- give more helpful error messages
- factor the lookup code for the xfb and objBuf
- replace some already-existing tabs with spaces
- add comments to explain the cases where xfb == 0 or buffer == 0
- fix the condition for binding the transform buffer or not

v3: Review from Laura Ekstrand
- rename _mesa_lookup_bufferobj_err to
  _mesa_lookup_transform_feedback_bufferobj_err and make it static to avoid a
  future conflict
- make _mesa_lookup_transform_feedback_object_err static

v4: Review from Laura Ekstrand
- add the pdf page number when quoting the spec
- rename some of the symbols to follow the public/private conventions

v5: Review from Laura Ekstrand
- properly rename some of the symbols to follow the public/private conventions
- fix some alignments
- add quotes around a spec citation
- add back a newline I accidentally deleted
- add spaces around the ternary operator usages

Signed-off-by: Martin Peres martin.pe...@linux.intel.com
---
 src/mapi/glapi/gen/ARB_direct_state_access.xml |   6 ++
 src/mesa/main/bufferobj.c  |   9 +-
 src/mesa/main/tests/dispatch_sanity.cpp|   1 +
 src/mesa/main/transformfeedback.c  | 138 +++--
 src/mesa/main/transformfeedback.h  |  10 +-
 5 files changed, 129 insertions(+), 35 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml 
b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index 15b00c2..35d6906 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -14,6 +14,12 @@
   param name=ids type=GLuint * /
/function
 
+   function name=TransformFeedbackBufferBase offset=assign
+  param name=xfb type=GLuint /
+  param name=index type=GLuint /
+  param name=buffer type=GLuint /
+   /function
+
!-- Texture object functions --
 
function name=CreateTextures offset=assign
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index b372c68..96d43c8 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -3575,8 +3575,9 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
 
switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
-  _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
-offset, size);
+  _mesa_bind_buffer_range_transform_feedback(ctx,
+ 
ctx-TransformFeedback.CurrentObject,
+ index, bufObj, offset, size);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_range_uniform_buffer(ctx, index, bufObj, offset, size);
@@ -3640,7 +3641,9 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint 
buffer)
 
switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
-  _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
+  _mesa_bind_buffer_base_transform_feedback(ctx,
+
ctx-TransformFeedback.CurrentObject,
+index, bufObj, false);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_base_uniform_buffer(ctx, index, bufObj);
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp 
b/src/mesa/main/tests/dispatch_sanity.cpp
index c37ce95..3195abb 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -956,6 +956,7 @@ const struct function gl_core_functions_possible[] = {
 
/* GL_ARB_direct_state_access */
{ glCreateTransformFeedbacks, 45, -1 },
+   { glTransformFeedbackBufferBase, 45, -1 },
{ glCreateTextures, 45, -1 },
{ glTextureStorage1D, 45, -1 },
{ glTextureStorage2D, 45, -1 },
diff --git a/src/mesa/main/transformfeedback.c 
b/src/mesa/main/transformfeedback.c
index 10bb6a1..159fa62 100644
--- a/src/mesa/main/transformfeedback.c
+++ b/src/mesa/main/transformfeedback.c
@@ -514,22 +514,24 @@ _mesa_EndTransformFeedback(void)
  * Helper used by BindBufferRange() and BindBufferBase().
  */
 static void
-bind_buffer_range(struct gl_context *ctx, GLuint index,
+bind_buffer_range(struct gl_context *ctx,
+  struct gl_transform_feedback_object *obj,
+  GLuint index,
   struct gl_buffer_object *bufObj,
-  GLintptr offset, GLsizeiptr size)
+  GLintptr offset, GLsizeiptr size,
+  bool dsa)
 {
-   struct gl_transform_feedback_object *obj =
-  ctx-TransformFeedback.CurrentObject;
-
/* Note: no need to FLUSH_VERTICES or flag NewTransformFeedback, because
 * transform feedback buffers can't be changed while transform feedback is
 * active.
 */
 
-   /* The general binding point */
-   _mesa_reference_buffer_object(ctx,
- ctx-TransformFeedback.CurrentBuffer,
- bufObj);
+   if (!dsa) {
+  /* The general binding 

Re: [Mesa-dev] [PATCH 05/16] main: Added entry point for glTransformFeedbackBufferBase

2015-02-20 Thread Laura Ekstrand
You still seem to be confused about the names of internal functions.  If a
function exists outside of its class, (ie. is extern-ed from a *.h file),
it should have the _mesa in front.  If a function exists purely inside of
a *.c file, it should be static and not have _mesa.

Since _mesa_lookup_transform_feedback_object in transformfeedback.h is used
outside of transformfeedback.[c|h], it should have the _mesa in front and
not be static.  In this patch, you renamed it to
lookup_transform_feedback_object, which is incorrect.

On the other hand, the names that you gave to
lookup_transform_feedback_object_err and
lookup_transform_feedback_bufferobj_err are just fine because these
functions are static and never called outside transformfeedback.c.

On Mon, Feb 16, 2015 at 6:13 AM, Martin Peres martin.pe...@linux.intel.com
wrote:

 v2: Review from Laura Ekstrand
 - give more helpful error messages
 - factor the lookup code for the xfb and objBuf
 - replace some already-existing tabs with spaces
 - add comments to explain the cases where xfb == 0 or buffer == 0
 - fix the condition for binding the transform buffer or not

 v3: Review from Laura Ekstrand
 - rename _mesa_lookup_bufferobj_err to
   _mesa_lookup_transform_feedback_bufferobj_err and make it static to
 avoid a
   future conflict
 - make _mesa_lookup_transform_feedback_object_err static

 v4: Review from Laura Ekstrand
 - add the pdf page number when quoting the spec
 - rename some of the symbols to follow the public/private conventions

 Signed-off-by: Martin Peres martin.pe...@linux.intel.com
 ---
  src/mapi/glapi/gen/ARB_direct_state_access.xml |   6 +
  src/mesa/main/bufferobj.c  |   9 +-
  src/mesa/main/objectlabel.c|   2 +-
  src/mesa/main/tests/dispatch_sanity.cpp|   1 +
  src/mesa/main/transformfeedback.c  | 146
 +++--
  src/mesa/main/transformfeedback.h  |  13 ++-
  src/mesa/vbo/vbo_exec_array.c  |   8 +-
  7 files changed, 139 insertions(+), 46 deletions(-)

 diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml
 b/src/mapi/glapi/gen/ARB_direct_state_access.xml
 index 15b00c2..35d6906 100644
 --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
 +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
 @@ -14,6 +14,12 @@
param name=ids type=GLuint * /
 /function

 +   function name=TransformFeedbackBufferBase offset=assign
 +  param name=xfb type=GLuint /
 +  param name=index type=GLuint /
 +  param name=buffer type=GLuint /
 +   /function
 +
 !-- Texture object functions --

 function name=CreateTextures offset=assign
 diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
 index 0c1ce98..86532ea 100644
 --- a/src/mesa/main/bufferobj.c
 +++ b/src/mesa/main/bufferobj.c
 @@ -3546,8 +3546,9 @@ _mesa_BindBufferRange(GLenum target, GLuint index,

 switch (target) {
 case GL_TRANSFORM_FEEDBACK_BUFFER:
 -  _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
 -offset, size);
 +  _mesa_bind_buffer_range_transform_feedback(ctx,
 +
  ctx-TransformFeedback.CurrentObject,
 + index, bufObj, offset,
 size);
return;
 case GL_UNIFORM_BUFFER:
bind_buffer_range_uniform_buffer(ctx, index, bufObj, offset, size);
 @@ -3611,7 +3612,9 @@ _mesa_BindBufferBase(GLenum target, GLuint index,
 GLuint buffer)

 switch (target) {
 case GL_TRANSFORM_FEEDBACK_BUFFER:
 -  _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
 +  _mesa_bind_buffer_base_transform_feedback(ctx,
 +
 ctx-TransformFeedback.CurrentObject,
 +index, bufObj, false);
return;
 case GL_UNIFORM_BUFFER:
bind_buffer_base_uniform_buffer(ctx, index, bufObj);
 diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c
 index 78df96b..19a7e59 100644
 --- a/src/mesa/main/objectlabel.c
 +++ b/src/mesa/main/objectlabel.c
 @@ -170,7 +170,7 @@ get_label_pointer(struct gl_context *ctx, GLenum
 identifier, GLuint name,
 case GL_TRANSFORM_FEEDBACK:
{
   struct gl_transform_feedback_object *tfo =
 -_mesa_lookup_transform_feedback_object(ctx, name);
 +lookup_transform_feedback_object(ctx, name);
   if (tfo)
  labelPtr = tfo-Label;
}
 diff --git a/src/mesa/main/tests/dispatch_sanity.cpp
 b/src/mesa/main/tests/dispatch_sanity.cpp
 index bf320bf..183755f 100644
 --- a/src/mesa/main/tests/dispatch_sanity.cpp
 +++ b/src/mesa/main/tests/dispatch_sanity.cpp
 @@ -956,6 +956,7 @@ const struct function gl_core_functions_possible[] = {

 /* GL_ARB_direct_state_access */
 { glCreateTransformFeedbacks, 45, -1 },
 +   { glTransformFeedbackBufferBase, 45, -1 },
 { glCreateTextures, 45, -1 },
 { glTextureStorage1D, 45, -1 },
 { glTextureStorage2D, 45, -1 

[Mesa-dev] [PATCH 05/16] main: Added entry point for glTransformFeedbackBufferBase

2015-02-16 Thread Martin Peres
v2: Review from Laura Ekstrand
- give more helpful error messages
- factor the lookup code for the xfb and objBuf
- replace some already-existing tabs with spaces
- add comments to explain the cases where xfb == 0 or buffer == 0
- fix the condition for binding the transform buffer or not

v3: Review from Laura Ekstrand
- rename _mesa_lookup_bufferobj_err to
  _mesa_lookup_transform_feedback_bufferobj_err and make it static to avoid a
  future conflict
- make _mesa_lookup_transform_feedback_object_err static

v4: Review from Laura Ekstrand
- add the pdf page number when quoting the spec
- rename some of the symbols to follow the public/private conventions

Signed-off-by: Martin Peres martin.pe...@linux.intel.com
---
 src/mapi/glapi/gen/ARB_direct_state_access.xml |   6 +
 src/mesa/main/bufferobj.c  |   9 +-
 src/mesa/main/objectlabel.c|   2 +-
 src/mesa/main/tests/dispatch_sanity.cpp|   1 +
 src/mesa/main/transformfeedback.c  | 146 +++--
 src/mesa/main/transformfeedback.h  |  13 ++-
 src/mesa/vbo/vbo_exec_array.c  |   8 +-
 7 files changed, 139 insertions(+), 46 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml 
b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index 15b00c2..35d6906 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -14,6 +14,12 @@
   param name=ids type=GLuint * /
/function
 
+   function name=TransformFeedbackBufferBase offset=assign
+  param name=xfb type=GLuint /
+  param name=index type=GLuint /
+  param name=buffer type=GLuint /
+   /function
+
!-- Texture object functions --
 
function name=CreateTextures offset=assign
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 0c1ce98..86532ea 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -3546,8 +3546,9 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
 
switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
-  _mesa_bind_buffer_range_transform_feedback(ctx, index, bufObj,
-offset, size);
+  _mesa_bind_buffer_range_transform_feedback(ctx,
+ 
ctx-TransformFeedback.CurrentObject,
+ index, bufObj, offset, size);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_range_uniform_buffer(ctx, index, bufObj, offset, size);
@@ -3611,7 +3612,9 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint 
buffer)
 
switch (target) {
case GL_TRANSFORM_FEEDBACK_BUFFER:
-  _mesa_bind_buffer_base_transform_feedback(ctx, index, bufObj);
+  _mesa_bind_buffer_base_transform_feedback(ctx,
+
ctx-TransformFeedback.CurrentObject,
+index, bufObj, false);
   return;
case GL_UNIFORM_BUFFER:
   bind_buffer_base_uniform_buffer(ctx, index, bufObj);
diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c
index 78df96b..19a7e59 100644
--- a/src/mesa/main/objectlabel.c
+++ b/src/mesa/main/objectlabel.c
@@ -170,7 +170,7 @@ get_label_pointer(struct gl_context *ctx, GLenum 
identifier, GLuint name,
case GL_TRANSFORM_FEEDBACK:
   {
  struct gl_transform_feedback_object *tfo =
-_mesa_lookup_transform_feedback_object(ctx, name);
+lookup_transform_feedback_object(ctx, name);
  if (tfo)
 labelPtr = tfo-Label;
   }
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp 
b/src/mesa/main/tests/dispatch_sanity.cpp
index bf320bf..183755f 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -956,6 +956,7 @@ const struct function gl_core_functions_possible[] = {
 
/* GL_ARB_direct_state_access */
{ glCreateTransformFeedbacks, 45, -1 },
+   { glTransformFeedbackBufferBase, 45, -1 },
{ glCreateTextures, 45, -1 },
{ glTextureStorage1D, 45, -1 },
{ glTextureStorage2D, 45, -1 },
diff --git a/src/mesa/main/transformfeedback.c 
b/src/mesa/main/transformfeedback.c
index 10bb6a1..d932943 100644
--- a/src/mesa/main/transformfeedback.c
+++ b/src/mesa/main/transformfeedback.c
@@ -514,22 +514,24 @@ _mesa_EndTransformFeedback(void)
  * Helper used by BindBufferRange() and BindBufferBase().
  */
 static void
-bind_buffer_range(struct gl_context *ctx, GLuint index,
+bind_buffer_range(struct gl_context *ctx,
+  struct gl_transform_feedback_object *obj,
+  GLuint index,
   struct gl_buffer_object *bufObj,
-  GLintptr offset, GLsizeiptr size)
+  GLintptr offset, GLsizeiptr size,
+  bool dsa)
 {
-   struct gl_transform_feedback_object *obj =
-  ctx-TransformFeedback.CurrentObject;
-
/* Note: no need