[Bf-blender-cvs] [bd434b9] viewport_experiments: Revert "Hook up flags to request a specific sorting scheme from GPU buffer setup"

Antony Riakiotakis noreply at git.blender.org
Fri Nov 28 16:20:54 CET 2014


Commit: bd434b92b69b1c9f5412cf129a1440d875dd66fd
Author: Antony Riakiotakis
Date:   Fri Nov 28 16:10:25 2014 +0100
Branches: viewport_experiments
https://developer.blender.org/rBbd434b92b69b1c9f5412cf129a1440d875dd66fd

Revert "Hook up flags to request a specific sorting scheme from GPU buffer setup"

This reverts commit 827ad6075dcf144025db7c4319e9954dcf45b26c.

===================================================================

M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/editors/sculpt_paint/paint_vertex.c
M	source/blender/editors/space_view3d/drawmesh.c
M	source/blender/gpu/GPU_buffers.h
M	source/blender/gpu/intern/gpu_buffers.c

===================================================================

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 0c1041f..bfc70c9 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -347,15 +347,15 @@ static void cdDM_drawVerts(DerivedMesh *dm)
 	MVert *mv = cddm->mvert;
 	int i;
 
-	if (GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+	if (GPU_buffer_legacy(dm)) {
 		glBegin(GL_POINTS);
 		for (i = 0; i < dm->numVertData; i++, mv++)
 			glVertex3fv(mv->co);
 		glEnd();
 	}
 	else {  /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
-		GPU_vertex_setup(dm, GPU_SORT_NONE);
-		if (!GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+		GPU_vertex_setup(dm);
+		if (!GPU_buffer_legacy(dm)) {
 			if (dm->drawObject->tot_triangle_point)
 				glDrawArrays(GL_POINTS, 0, dm->drawObject->tot_triangle_point);
 			else
@@ -373,7 +373,7 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
 	int i;
 
 	if (mf) {
-		if (GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+		if (GPU_buffer_legacy(dm)) {
 			glBegin(GL_LINES);
 			for (i = 0; i < dm->numTessFaceData; i++, mf++, tf++) {
 				if (!(mf->flag & ME_HIDE)) {
@@ -404,8 +404,8 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
 			int draw = 1;
 			int curpos = 0;
 
-			GPU_uvedge_setup(dm, GPU_SORT_NONE);
-			if (!GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+			GPU_uvedge_setup(dm);
+			if (!GPU_buffer_legacy(dm)) {
 				for (i = 0; i < dm->numTessFaceData; i++, mf++) {
 					if (!(mf->flag & ME_HIDE)) {
 						draw = 1;
@@ -451,7 +451,7 @@ static void cdDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdg
 		return;
 	}
 	
-	if (GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+	if (GPU_buffer_legacy(dm)) {
 		DEBUG_VBO("Using legacy code. cdDM_drawEdges\n");
 		glBegin(GL_LINES);
 		for (i = 0; i < dm->numEdgeData; i++, medge++) {
@@ -469,8 +469,8 @@ static void cdDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdg
 		int prevdraw = 1;
 		bool draw = true;
 
-		GPU_edge_setup(dm, GPU_SORT_NONE);
-		if (!GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+		GPU_edge_setup(dm);
+		if (!GPU_buffer_legacy(dm)) {
 			for (i = 0; i < dm->numEdgeData; i++, medge++) {
 				if ((drawAllEdges || (medge->flag & ME_EDGEDRAW)) &&
 				    (drawLooseEdges || !(medge->flag & ME_LOOSEEDGE)))
@@ -503,7 +503,7 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm)
 	MEdge *medge = cddm->medge;
 	int i;
 
-	if (GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+	if (GPU_buffer_legacy(dm)) {
 		DEBUG_VBO("Using legacy code. cdDM_drawLooseEdges\n");
 		glBegin(GL_LINES);
 		for (i = 0; i < dm->numEdgeData; i++, medge++) {
@@ -519,8 +519,8 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm)
 		int prevdraw = 1;
 		int draw = 1;
 
-		GPU_edge_setup(dm, GPU_SORT_NONE);
-		if (!GPU_buffer_legacy(dm, GPU_SORT_NONE)) {
+		GPU_edge_setup(dm);
+		if (!GPU_buffer_legacy(dm)) {
 			for (i = 0; i < dm->numEdgeData; i++, medge++) {
 				if (medge->flag & ME_LOOSEEDGE) {
 					draw = 1;
@@ -567,7 +567,7 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm,
 		return;
 	}
 
-	if (GPU_buffer_legacy(dm, GPU_SORT_MATERIAL)) {
+	if (GPU_buffer_legacy(dm)) {
 		DEBUG_VBO("Using legacy code. cdDM_drawFacesSolid\n");
 		glBegin(glmode = GL_QUADS);
 		for (a = 0; a < dm->numTessFaceData; a++, mface++) {
@@ -648,9 +648,9 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm,
 		glEnd();
 	}
 	else {  /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
-		GPU_vertex_setup(dm, GPU_SORT_MATERIAL);
-		GPU_normal_setup(dm, GPU_SORT_MATERIAL);
-		if (!GPU_buffer_legacy(dm, GPU_SORT_MATERIAL)) {
+		GPU_vertex_setup(dm);
+		GPU_normal_setup(dm);
+		if (!GPU_buffer_legacy(dm)) {
 			glShadeModel(GL_SMOOTH);
 			for (a = 0; a < dm->drawObject->totmaterial; a++) {
 				if (!setMaterial || setMaterial(dm->drawObject->materials[a].mat_nr + 1, NULL)) {
@@ -718,7 +718,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
 
 	cdDM_update_normals_from_pbvh(dm);
 
-	if (GPU_buffer_legacy(dm, GPU_SORT_MATERIAL_TEXTURE)) {
+	if (GPU_buffer_legacy(dm)) {
 		int mat_nr_cache = -1;
 		MTFace *tf_base = DM_get_tessface_data_layer(dm, CD_MTFACE);
 		MTFace *tf_stencil_base = NULL;
@@ -843,17 +843,17 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
 		}
 	}
 	else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
-		GPU_vertex_setup(dm, GPU_SORT_MATERIAL_TEXTURE);
-		GPU_normal_setup(dm, GPU_SORT_MATERIAL_TEXTURE);
+		GPU_vertex_setup(dm);
+		GPU_normal_setup(dm);
 		if (uvflag & DM_DRAW_USE_TEXPAINT_UV)
-			GPU_texpaint_uv_setup(dm, GPU_SORT_MATERIAL_TEXTURE);
+			GPU_texpaint_uv_setup(dm);
 		else
-			GPU_uv_setup(dm, GPU_SORT_MATERIAL_TEXTURE);
+			GPU_uv_setup(dm);
 		if (mcol) {
-			GPU_color_setup(dm, colType, GPU_SORT_MATERIAL_TEXTURE);
+			GPU_color_setup(dm, colType);
 		}
 
-		if (!GPU_buffer_legacy(dm, GPU_SORT_MATERIAL_TEXTURE)) {
+		if (!GPU_buffer_legacy(dm)) {
 			int tottri = dm->drawObject->tot_triangle_point / 3;
 			int next_actualFace = dm->drawObject->triangle_to_mface[0];
 
@@ -968,7 +968,7 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm,
 
 	/* back-buffer always uses legacy since VBO's would need the
 	 * color array temporarily overwritten for drawing, then reset. */
-	if (GPU_buffer_legacy(dm, GPU_SORT_MATERIAL) || G.f & G_BACKBUFSEL) {
+	if (GPU_buffer_legacy(dm) || G.f & G_BACKBUFSEL) {
 		DEBUG_VBO("Using legacy code. cdDM_drawMappedFaces\n");
 		for (i = 0; i < dm->numTessFaceData; i++, mf++) {
 			int drawSmooth = ((flag & DM_DRAW_ALWAYS_SMOOTH) || lnors) ? 1 : (mf->flag & ME_SMOOTH);
@@ -1070,12 +1070,12 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm,
 	}
 	else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
 		int prevstart = 0;
-		GPU_vertex_setup(dm, GPU_SORT_MATERIAL);
-		GPU_normal_setup(dm, GPU_SORT_MATERIAL);
+		GPU_vertex_setup(dm);
+		GPU_normal_setup(dm);
 		if (useColors && mcol) {
-			GPU_color_setup(dm, colType, GPU_SORT_MATERIAL);
+			GPU_color_setup(dm, colType);
 		}
-		if (!GPU_buffer_legacy(dm, GPU_SORT_MATERIAL)) {
+		if (!GPU_buffer_legacy(dm)) {
 			int tottri = dm->drawObject->tot_triangle_point / 3;
 			glShadeModel(GL_SMOOTH);
 			
@@ -1270,7 +1270,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm,
 
 	glShadeModel(GL_SMOOTH);
 
-	if (GPU_buffer_legacy(dm, GPU_SORT_MATERIAL) || setDrawOptions != NULL) {
+	if (GPU_buffer_legacy(dm) || setDrawOptions != NULL) {
 		DEBUG_VBO("Using legacy code. cdDM_drawMappedFacesGLSL\n");
 		memset(&attribs, 0, sizeof(attribs));
 
@@ -1352,10 +1352,10 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm,
 		GPUAttrib datatypes[GPU_MAX_ATTRIB]; /* TODO, messing up when switching materials many times - [#21056]*/
 		memset(&attribs, 0, sizeof(attribs));
 
-		GPU_vertex_setup(dm, GPU_SORT_MATERIAL);
-		GPU_normal_setup(dm, GPU_SORT_MATERIAL);
+		GPU_vertex_setup(dm);
+		GPU_normal_setup(dm);
 
-		if (!GPU_buffer_legacy(dm, GPU_SORT_MATERIAL)) {
+		if (!GPU_buffer_legacy(dm)) {
 			for (i = 0; i < dm->drawObject->tot_triangle_point / 3; i++) {
 
 				a = dm->drawObject->triangle_to_mface[i];
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 07abb99..376d3d3 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -3024,7 +3024,7 @@ static void vpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
 		 * avoid this if we can! */
 		DAG_id_tag_update(ob->data, 0);
 	}
-	else if (!GPU_buffer_legacy(ob->derivedFinal, GPU_SORT_MATERIAL)) {
+	else if (!GPU_buffer_legacy(ob->derivedFinal)) {
 		/* If using new VBO drawing, mark mcol as dirty to force colors gpu buffer refresh! */
 		ob->derivedFinal->dirty |= DM_DIRTY_MCOL_UPDATE_DRAW;
 	}
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index d2eaeee..7334afe 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -930,7 +930,7 @@ static void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d
 		}
 	}
 	else {
-		if (GPU_buffer_legacy(dm, GPU_SORT_MATERIAL)) {
+		if (GPU_buffer_legacy(dm)) {
 			if (draw_flags & DRAW_MODIFIERS_PREVIEW)
 				dm->drawFacesTex(dm, draw_mcol__set_draw_legacy, NULL, NULL, uvflag);
 			else 
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h
index e152acf..c690b0c 100644
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@ -133,25 +133,18 @@ void GPU_global_buffer_pool_free_unused(void);
 GPUBuffer *GPU_buffer_alloc(int size);
 void GPU_buffer_free(GPUBuffer *buffer);
 
-/* how are vertex data sorted */
-typedef enum GPUSortType {
-	GPU_SORT_NONE =             0, /* no sorting, just dump data */
-	GPU_SORT_MATERIAL =         1, /* sort based on materials only */
-	GPU_SORT_MATERIAL_TEXTURE = 2  /* sort based on materials and textures */
-} GPUSortType;
-
-GPUDrawObject *GPU_drawobject_new(struct DerivedMesh *dm, GPUSortType type);
+GPUDrawObject *GPU_drawobject_new(struct DerivedMesh *dm);
 void GPU_drawobject_free(struct DerivedMesh *dm);
 
 /* called before drawing */
-void GPU_vertex_setup(struct DerivedMesh *dm, GPUSortType type);
-void GPU_normal_setup(struct DerivedMesh *dm, GPUSortType type);
-void GPU_uv_setup(struct DerivedMesh *dm, GPUSortType type);
-void GPU_texpaint_uv_setup(struct DerivedMesh *dm, GPUSortType type);
+void GPU_vertex_setup(struct DerivedMesh *dm);
+void GPU_normal_setup(struct DerivedMesh *dm);
+void GPU_uv_setup(struct DerivedMesh *dm);
+void GPU_texpaint_uv_setup(struct DerivedMesh *dm);
 /* colType is the cddata MCol type to use! */
-void GPU_color_setup(struct DerivedMesh *dm, int colType, GPUSortType type);
-void GPU_edge_setup(struct DerivedMesh *dm, GPUSortType type); /* does not mix with other data */
-void GPU_uvedge_setup(struct DerivedMesh *dm, GPUSortType type);
+void GPU_color_setup(struct DerivedMesh *dm, int colType);
+void GPU_edge_setup(struct DerivedMesh *dm); /* does not mix with other data */
+void GPU_uvedge_setup(struct DerivedMesh *dm);
 int GPU_attrib_ele

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list