vbo: Make no_current_update an argument to vbo_save_NotifyBegin.
authorMathias Fröhlich <mathias.froehlich@web.de>
Mon, 29 Oct 2018 05:13:19 +0000 (06:13 +0100)
committerMathias Fröhlich <mathias.froehlich@web.de>
Thu, 1 Nov 2018 05:08:49 +0000 (06:08 +0100)
Instead of coding additional information into the primitive
mode, make the only remaining flag there a direct argument to
vbo_save_NotifyBegin.

v2: Fix incorrect no_current_update in glRectf.

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

index ae23d29283766afe51d0c329e2be04b3c04d58b7..97461cede3465e6599d68a53c7e4a6f610ce025d 100644 (file)
@@ -6094,7 +6094,7 @@ save_Begin(GLenum mode)
    else {
       ctx->Driver.CurrentSavePrimitive = mode;
 
-      vbo_save_NotifyBegin(ctx, mode);
+      vbo_save_NotifyBegin(ctx, mode, false);
    }
 }
 
index ac0be5acf4a9022ea50cd2d57ad77e714b44fa40..60b725468d0df60e9c391ebcb14210fe87a48b42 100644 (file)
@@ -100,7 +100,8 @@ void
 vbo_save_SaveFlushVertices(struct gl_context *ctx);
 
 void
-vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode);
+vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode,
+                     bool no_current_update);
 
 void
 vbo_save_NewList(struct gl_context *ctx, GLuint list, GLenum mode);
index 6f2cc5bad423174cc326736db8d3f8bad1629cbe..e8677b1ac59480748a1fbbfa894bb13d59b86047 100644 (file)
@@ -137,7 +137,6 @@ _vbo_save_get_vertex_count(const struct vbo_save_vertex_list *node)
 #define VBO_SAVE_BUFFER_SIZE (256*1024) /* dwords */
 #define VBO_SAVE_PRIM_SIZE   128
 #define VBO_SAVE_PRIM_MODE_MASK         0x3f
-#define VBO_SAVE_PRIM_NO_CURRENT_UPDATE 0x80
 
 struct vbo_save_vertex_store {
    struct gl_buffer_object *bufferobj;
index 28f8c46793b0b5a76f1ca8a751a5706718af9e8f..dbdd5bfbcbc008dee9a9dc787b882c8d8ba5c92c 100644 (file)
@@ -1193,7 +1193,8 @@ _save_CallLists(GLsizei n, GLenum type, const GLvoid * v)
  * Updating of ctx->Driver.CurrentSavePrimitive is already taken care of.
  */
 void
-vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode)
+vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode,
+                     bool no_current_update)
 {
    struct vbo_save_context *save = &vbo_context(ctx)->save;
    const GLuint i = save->prim_count++;
@@ -1209,8 +1210,7 @@ vbo_save_NotifyBegin(struct gl_context *ctx, GLenum mode)
    save->prims[i].base_instance = 0;
    save->prims[i].is_indirect = 0;
 
-   save->no_current_update =
-      (mode & VBO_SAVE_PRIM_NO_CURRENT_UPDATE) ? 1 : 0;
+   save->no_current_update = no_current_update;
 
    if (save->out_of_memory) {
       _mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
@@ -1280,7 +1280,7 @@ _save_PrimitiveRestartNV(void)
 
       /* restart primitive */
       CALL_End(GET_DISPATCH(), ());
-      vbo_save_NotifyBegin(ctx, curPrim);
+      vbo_save_NotifyBegin(ctx, curPrim, false);
    }
 }
 
@@ -1294,7 +1294,7 @@ static void GLAPIENTRY
 _save_OBE_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
 {
    GET_CURRENT_CONTEXT(ctx);
-   vbo_save_NotifyBegin(ctx, GL_QUADS);
+   vbo_save_NotifyBegin(ctx, GL_QUADS, false);
    CALL_Vertex2f(GET_DISPATCH(), (x1, y1));
    CALL_Vertex2f(GET_DISPATCH(), (x2, y1));
    CALL_Vertex2f(GET_DISPATCH(), (x2, y2));
@@ -1327,7 +1327,7 @@ _save_OBE_DrawArrays(GLenum mode, GLint start, GLsizei count)
 
    _ae_map_vbos(ctx);
 
-   vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_NO_CURRENT_UPDATE));
+   vbo_save_NotifyBegin(ctx, mode, true);
 
    for (i = 0; i < count; i++)
       CALL_ArrayElement(GET_DISPATCH(), (start + i));
@@ -1410,7 +1410,7 @@ _save_OBE_DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type,
       indices =
          ADD_POINTERS(indexbuf->Mappings[MAP_INTERNAL].Pointer, indices);
 
-   vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_NO_CURRENT_UPDATE));
+   vbo_save_NotifyBegin(ctx, mode, true);
 
    switch (type) {
    case GL_UNSIGNED_BYTE: