mesa: Correct the is_vertex_position decision for dlists.
authorMathias Fröhlich <mathias.froehlich@web.de>
Mon, 29 Apr 2019 05:23:58 +0000 (07:23 +0200)
committerMathias Fröhlich <mathias.froehlich@web.de>
Sat, 4 May 2019 05:40:35 +0000 (07:40 +0200)
We have to use _mesa_inside_dlist_begin_end instead of
_mesa_inside_begin_end to see if we are inside a glBegin/glEnd block in
case of display lists.
So split the is_vertex_position function used in vertex attribute processing
into a imm and dlist variant and use the appropriate _mesa_inside_begin_end
variant.

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

index 796b38836337ea607b7b05c8e235e4817739a593..5c4beb540bf57976b6d2f9f876cf8d73260056c5 100644 (file)
@@ -522,20 +522,6 @@ TAG(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
 }
 
 
-/**
- * If index=0, does glVertexAttrib*() alias glVertex() to emit a vertex?
- * It depends on a few things, including whether we're inside or outside
- * of glBegin/glEnd.
- */
-static inline bool
-is_vertex_position(const struct gl_context *ctx, GLuint index)
-{
-   return (index == 0 &&
-           _mesa_attr_zero_aliases_vertex(ctx) &&
-           _mesa_inside_begin_end(ctx));
-}
-
-
 static void GLAPIENTRY
 TAG(VertexAttrib1fARB)(GLuint index, GLfloat x)
 {
index 749a5ebe65ac9f8eab6e1fd7720ca1f7d670308f..5b1549d96def4cac0e5a01a8ea9fe3443ee10809 100644 (file)
@@ -457,6 +457,20 @@ vbo_exec_begin_vertices(struct gl_context *ctx)
 }
 
 
+/**
+ * If index=0, does glVertexAttrib*() alias glVertex() to emit a vertex?
+ * It depends on a few things, including whether we're inside or outside
+ * of glBegin/glEnd.
+ */
+static inline bool
+is_vertex_position(const struct gl_context *ctx, GLuint index)
+{
+   return (index == 0 &&
+           _mesa_attr_zero_aliases_vertex(ctx) &&
+           _mesa_inside_begin_end(ctx));
+}
+
+
 /**
  * This macro is used to implement all the glVertex, glColor, glTexCoord,
  * glVertexAttrib, etc functions.
index b33dfa5fd8e1027b7ac20a9610d8964b80d72031..d378bdb058d55b337ffc0eecb9f193f8a527fddf 100644 (file)
@@ -979,6 +979,20 @@ reset_vertex(struct gl_context *ctx)
 }
 
 
+/**
+ * If index=0, does glVertexAttrib*() alias glVertex() to emit a vertex?
+ * It depends on a few things, including whether we're inside or outside
+ * of glBegin/glEnd.
+ */
+static inline bool
+is_vertex_position(const struct gl_context *ctx, GLuint index)
+{
+   return (index == 0 &&
+           _mesa_attr_zero_aliases_vertex(ctx) &&
+           _mesa_inside_dlist_begin_end(ctx));
+}
+
+
 
 #define ERROR(err)   _mesa_compile_error(ctx, err, __func__);