[Bf-blender-cvs] [2bd36338d3f] blender2.8: Gawain : Add workaround to fix bad sync of the program_in_use flag.
Clément Foucault
noreply at git.blender.org
Mon Oct 2 22:17:27 CEST 2017
Commit: 2bd36338d3ff809c104fe4a30e9332a2929f10c2
Author: Clément Foucault
Date: Mon Oct 2 22:16:50 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB2bd36338d3ff809c104fe4a30e9332a2929f10c2
Gawain : Add workaround to fix bad sync of the program_in_use flag.
===================================================================
M intern/gawain/gawain/gwn_batch.h
M intern/gawain/src/gwn_batch.c
M source/blender/draw/intern/draw_manager.c
===================================================================
diff --git a/intern/gawain/gawain/gwn_batch.h b/intern/gawain/gawain/gwn_batch.h
index 9bcb7437163..ee1599845c8 100644
--- a/intern/gawain/gawain/gwn_batch.h
+++ b/intern/gawain/gawain/gwn_batch.h
@@ -65,6 +65,7 @@ int GWN_batch_vertbuf_add_ex(Gwn_Batch*, Gwn_VertBuf*, bool own_vbo);
GWN_batch_vertbuf_add_ex(batch, verts, false)
void GWN_batch_program_set(Gwn_Batch*, GLuint program, const Gwn_ShaderInterface*);
+void GWN_batch_program_unset(Gwn_Batch*);
// Entire batch draws with one shader program, but can be redrawn later with another program.
// Vertex shader's inputs must be compatible with the batch's vertex format.
diff --git a/intern/gawain/src/gwn_batch.c b/intern/gawain/src/gwn_batch.c
index 359ca956495..c651fb3a26f 100644
--- a/intern/gawain/src/gwn_batch.c
+++ b/intern/gawain/src/gwn_batch.c
@@ -110,6 +110,14 @@ void GWN_batch_program_set(Gwn_Batch* batch, GLuint program, const Gwn_ShaderInt
GWN_batch_program_use_begin(batch); // hack! to make Batch_Uniform* simpler
}
+// fclem : hack !
+// we need this because we don't want to unbind the shader between drawcalls
+// but we still want the correct shader to be bound outside the draw manager
+void GWN_batch_program_unset(Gwn_Batch* batch)
+ {
+ batch->program_in_use = false;
+ }
+
static void Batch_update_program_bindings(Gwn_Batch* batch)
{
// disable all as a precaution
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index fab2df680ea..ec22baace3e 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1809,6 +1809,9 @@ static void draw_geometry_execute(DRWShadingGroup *shgroup, Gwn_Batch *geom)
else {
GWN_batch_draw_stupid(geom);
}
+ /* XXX this just tells gawain we are done with the shader.
+ * This does not unbind the shader. */
+ GWN_batch_program_unset(geom);
}
static void draw_geometry(DRWShadingGroup *shgroup, Gwn_Batch *geom, const float (*obmat)[4], ID *ob_data)
More information about the Bf-blender-cvs
mailing list