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)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs