mesa: Add ARB_direct_state_access checks in XFB functions
authorFredrik Höglund <fredrik@kde.org>
Sun, 10 May 2015 18:44:07 +0000 (20:44 +0200)
committerFredrik Höglund <fredrik@kde.org>
Thu, 14 May 2015 13:48:16 +0000 (15:48 +0200)
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
src/mesa/main/transformfeedback.c

index 103011ce5722d2af97193a915d1997a0fb4157fa..642fa96477ac3c8a8b38deed6f875eadbf1033f7 100644 (file)
@@ -706,6 +706,13 @@ _mesa_TransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer)
    struct gl_transform_feedback_object *obj;
    struct gl_buffer_object *bufObj;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glTransformFeedbackBufferBase(GL_ARB_direct_state_access "
+                  "is not supported)");
+      return;
+   }
+
    obj = lookup_transform_feedback_object_err(ctx, xfb,
                                               "glTransformFeedbackBufferBase");
    if(!obj) {
@@ -729,6 +736,13 @@ _mesa_TransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer,
    struct gl_transform_feedback_object *obj;
    struct gl_buffer_object *bufObj;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glTransformFeedbackBufferRange(GL_ARB_direct_state_access "
+                  "is not supported)");
+      return;
+   }
+
    obj = lookup_transform_feedback_object_err(ctx, xfb,
                                               "glTransformFeedbackBufferRange");
    if(!obj) {
@@ -1045,6 +1059,13 @@ _mesa_CreateTransformFeedbacks(GLsizei n, GLuint *names)
 {
    GET_CURRENT_CONTEXT(ctx);
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glCreateTransformFeedbacks(GL_ARB_direct_state_access "
+                  "is not supported)");
+      return;
+   }
+
    create_transform_feedbacks(ctx, n, names, true);
 }
 
@@ -1215,6 +1236,13 @@ _mesa_GetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)
     struct gl_transform_feedback_object *obj;
     GET_CURRENT_CONTEXT(ctx);
 
+    if (!ctx->Extensions.ARB_direct_state_access) {
+       _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glGetTransformFeedbackiv(GL_ARB_direct_state_access "
+                   "is not supported)");
+       return;
+    }
+
     obj = lookup_transform_feedback_object_err(ctx, xfb,
                                                "glGetTransformFeedbackiv");
     if(!obj) {
@@ -1241,6 +1269,13 @@ _mesa_GetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index,
    struct gl_transform_feedback_object *obj;
    GET_CURRENT_CONTEXT(ctx);
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glGetTransformFeedbacki_v(GL_ARB_direct_state_access "
+                  "is not supported)");
+      return;
+   }
+
    obj = lookup_transform_feedback_object_err(ctx, xfb,
                                               "glGetTransformFeedbacki_v");
    if(!obj) {
@@ -1270,6 +1305,13 @@ _mesa_GetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index,
    struct gl_transform_feedback_object *obj;
    GET_CURRENT_CONTEXT(ctx);
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glGetTransformFeedbacki64_v(GL_ARB_direct_state_access "
+                  "is not supported)");
+      return;
+   }
+
    obj = lookup_transform_feedback_object_err(ctx, xfb,
                                               "glGetTransformFeedbacki64_v");
    if(!obj) {