vbo: add new vbo_compute_max_verts() helper function
authorBrian Paul <brianp@vmware.com>
Fri, 16 Oct 2015 17:19:40 +0000 (11:19 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 20 Oct 2015 18:52:41 +0000 (12:52 -0600)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
src/mesa/vbo/vbo_context.h
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_exec_draw.c

index a376efe34a795671b98e58b3c4bfc1940d087577..1e85335c1070d9e1e8c297bfd88cd4f8a2cca8a1 100644 (file)
@@ -196,6 +196,20 @@ vbo_get_default_vals_as_union(GLenum format)
    }
 }
 
+
+/**
+ * Compute the max number of vertices which can be stored in
+ * a vertex buffer, given the current vertex size, and the amount
+ * of space already used.
+ */
+static inline unsigned
+vbo_compute_max_verts(const struct vbo_exec_context *exec)
+{
+   return (VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) /
+          (exec->vtx.vertex_size * sizeof(GLfloat));
+}
+
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index 3f87ac44265f2cdcafb15284843247bba4cd2a0b..f26bf405d56a1ffcc34f3789e0cb7438c2890a4d 100644 (file)
@@ -291,8 +291,7 @@ vbo_exec_wrap_upgrade_vertex(struct vbo_exec_context *exec,
     */
    exec->vtx.attrsz[attr] = newSize;
    exec->vtx.vertex_size += newSize - oldSize;
-   exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) / 
-                         (exec->vtx.vertex_size * sizeof(GLfloat)));
+   exec->vtx.max_vert = vbo_compute_max_verts(exec);
    exec->vtx.vert_count = 0;
    exec->vtx.buffer_ptr = exec->vtx.buffer_map;
 
index 9b1103dad7242c9a7716be4176dac8680077d686..f6a1e4bdfada45b93af86068c6cac31ed4307dee 100644 (file)
@@ -435,8 +435,7 @@ vbo_exec_vtx_flush(struct vbo_exec_context *exec, GLboolean keepUnmapped)
    if (keepUnmapped || exec->vtx.vertex_size == 0)
       exec->vtx.max_vert = 0;
    else
-      exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) /
-                            (exec->vtx.vertex_size * sizeof(GLfloat)));
+      exec->vtx.max_vert = vbo_compute_max_verts(exec);
 
    exec->vtx.buffer_ptr = exec->vtx.buffer_map;
    exec->vtx.prim_count = 0;