mesa: Remove _ae_{,un}map_vbos and dependencies.
authorMathias Fröhlich <mathias.froehlich@web.de>
Fri, 1 Mar 2019 08:27:53 +0000 (09:27 +0100)
committerMathias Fröhlich <mathias.froehlich@web.de>
Fri, 15 Mar 2019 05:06:42 +0000 (06:06 +0100)
Since mapping and unmapping the buffer objects in a VAO is handled
directly from the VAO, this part of the _NEW_ARRAY state is no longer
used. So remove this part of array element state.

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
src/mesa/main/api_arrayelt.c
src/mesa/main/api_arrayelt.h

index ea91fbcabf54f0ae45e89c91507fcead3f5561f7..1c086bbcda41865fad6fca8657aa394edc795d32 100644 (file)
@@ -66,11 +66,6 @@ typedef struct {
    AEarray arrays[32];
    AEattrib attribs[VERT_ATTRIB_MAX + 1];
 
-   /* List of VBOs we need to map before executing ArrayElements */
-   struct gl_buffer_object *vbo[VERT_ATTRIB_MAX];
-   GLuint nr_vbos;
-   GLboolean mapped_vbos;  /**< Any currently mapped VBOs? */
-
    bool dirty_state;
 } AEcontext;
 
@@ -1534,26 +1529,6 @@ _ae_destroy_context(struct gl_context *ctx)
 }
 
 
-/**
- * Check if the given vertex buffer object exists and is not mapped.
- * If so, add it to the list of buffers we must map before executing
- * an glArrayElement call.
- */
-static void
-check_vbo(AEcontext *actx, struct gl_buffer_object *vbo)
-{
-   if (_mesa_is_bufferobj(vbo) &&
-       !_mesa_bufferobj_mapped(vbo, MAP_INTERNAL)) {
-      GLuint i;
-      for (i = 0; i < actx->nr_vbos; i++)
-         if (actx->vbo[i] == vbo)
-            return;  /* already in the list, we're done */
-      assert(actx->nr_vbos < VERT_ATTRIB_MAX);
-      actx->vbo[actx->nr_vbos++] = vbo;
-   }
-}
-
-
 /**
  * Make a list of per-vertex functions to call for each glArrayElement call.
  * These functions access the array data (i.e. glVertex, glColor, glNormal,
@@ -1569,14 +1544,11 @@ _ae_update_state(struct gl_context *ctx)
    GLuint i;
    struct gl_vertex_array_object *vao = ctx->Array.VAO;
 
-   actx->nr_vbos = 0;
-
    /* conventional vertex arrays */
    if (vao->Enabled & VERT_BIT_COLOR_INDEX) {
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_COLOR_INDEX];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = IndexFuncs[TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1584,7 +1556,6 @@ _ae_update_state(struct gl_context *ctx)
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_EDGEFLAG];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = _gloffset_EdgeFlagv;
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1592,7 +1563,6 @@ _ae_update_state(struct gl_context *ctx)
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_NORMAL];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = NormalFuncs[TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1600,7 +1570,6 @@ _ae_update_state(struct gl_context *ctx)
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_COLOR0];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = ColorFuncs[aa->array->Format.Size-3][TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1608,7 +1577,6 @@ _ae_update_state(struct gl_context *ctx)
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_COLOR1];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = SecondaryColorFuncs[TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1616,7 +1584,6 @@ _ae_update_state(struct gl_context *ctx)
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_FOG];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = FogCoordFuncs[TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
@@ -1634,7 +1601,6 @@ _ae_update_state(struct gl_context *ctx)
                                  [at->array->Format.Size-1]
                                  [TYPE_IDX(at->array->Format.Type)];
          at->index = VERT_ATTRIB_TEX0 + i;
-        check_vbo(actx, at->binding->BufferObj);
          at++;
       }
    }
@@ -1666,7 +1632,6 @@ _ae_update_state(struct gl_context *ctx)
             [TYPE_IDX(at->array->Format.Type)];
 
          at->index = i;
-        check_vbo(actx, at->binding->BufferObj);
          at++;
       }
    }
@@ -1680,19 +1645,15 @@ _ae_update_state(struct gl_context *ctx)
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       assert(aa->array->Format.Size >= 2); /* XXX fix someday? */
       aa->offset = VertexFuncs[aa->array->Format.Size-2][TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
    else if (vao->Enabled & VERT_BIT_POS) {
       aa->array = &vao->VertexAttrib[VERT_ATTRIB_POS];
       aa->binding = &vao->BufferBinding[aa->array->BufferBindingIndex];
       aa->offset = VertexFuncs[aa->array->Format.Size-2][TYPE_IDX(aa->array->Format.Type)];
-      check_vbo(actx, aa->binding->BufferObj);
       aa++;
    }
 
-   check_vbo(actx, vao->IndexBufferObj);
-
    assert(at - actx->attribs <= VERT_ATTRIB_MAX);
    assert(aa - actx->arrays < 32);
    at->func = NULL;  /* terminate the list */
@@ -1702,55 +1663,6 @@ _ae_update_state(struct gl_context *ctx)
 }
 
 
-/**
- * Before replaying glArrayElements calls we need to map (for reading) any
- * VBOs referenced by the enabled vertex arrays.
- */
-void
-_ae_map_vbos(struct gl_context *ctx)
-{
-   AEcontext *actx = AE_CONTEXT(ctx);
-   GLuint i;
-
-   if (actx->mapped_vbos)
-      return;
-
-   if (actx->dirty_state)
-      _ae_update_state(ctx);
-
-   for (i = 0; i < actx->nr_vbos; i++)
-      ctx->Driver.MapBufferRange(ctx, 0,
-                                actx->vbo[i]->Size,
-                                GL_MAP_READ_BIT,
-                                actx->vbo[i],
-                                 MAP_INTERNAL);
-
-   if (actx->nr_vbos)
-      actx->mapped_vbos = GL_TRUE;
-}
-
-
-/**
- * Unmap VBOs
- */
-void
-_ae_unmap_vbos(struct gl_context *ctx)
-{
-   AEcontext *actx = AE_CONTEXT(ctx);
-   GLuint i;
-
-   if (!actx->mapped_vbos)
-      return;
-
-   assert (!actx->dirty_state);
-
-   for (i = 0; i < actx->nr_vbos; i++)
-      ctx->Driver.UnmapBuffer(ctx, actx->vbo[i], MAP_INTERNAL);
-
-   actx->mapped_vbos = GL_FALSE;
-}
-
-
 void
 _mesa_array_element(struct gl_context *ctx,
                     struct _glapi_table *disp, GLint elt)
@@ -1790,7 +1702,6 @@ void GLAPIENTRY
 _ae_ArrayElement(GLint elt)
 {
    GET_CURRENT_CONTEXT(ctx);
-   const AEcontext *actx = AE_CONTEXT(ctx);
    const struct _glapi_table * const disp = GET_DISPATCH();
    struct gl_vertex_array_object *vao;
 
@@ -1802,11 +1713,6 @@ _ae_ArrayElement(GLint elt)
       return;
    }
 
-   if (actx->dirty_state) {
-      assert(!actx->mapped_vbos);
-      _ae_update_state(ctx);
-   }
-
    vao = ctx->Array.VAO;
    _mesa_vao_map_arrays(ctx, vao, GL_MAP_READ_BIT);
 
@@ -1832,7 +1738,6 @@ _ae_invalidate_state(struct gl_context *ctx)
     */
    assert(ctx->NewState & _NEW_ARRAY);
 
-   assert(!actx->mapped_vbos);
    actx->dirty_state = true;
 }
 
index d0412806153fcace171a119f5b91bb88c25e6943..da047b88c3e491df7b1742ba17d2c6e250e20e3d 100644 (file)
@@ -40,11 +40,6 @@ extern void _mesa_array_element(struct gl_context *ctx,
                                 struct _glapi_table *disp, GLint elt);
 extern void GLAPIENTRY _ae_ArrayElement( GLint elt );
 
-/* May optionally be called before a batch of element calls:
- */
-extern void _ae_map_vbos( struct gl_context *ctx );
-extern void _ae_unmap_vbos( struct gl_context *ctx );
-
 extern void
 _mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp,
                               const GLvertexformat *vfmt);