[Bf-blender-cvs] [1112b6cd733] tmp-drw-callbatching: DRW: Fix Eevee rendering broken due to recent changes

Clément Foucault noreply at git.blender.org
Sat Aug 17 14:49:26 CEST 2019


Commit: 1112b6cd733aba763930546005f2133ea346ada8
Author: Clément Foucault
Date:   Sat Jun 1 19:44:27 2019 +0200
Branches: tmp-drw-callbatching
https://developer.blender.org/rB1112b6cd733aba763930546005f2133ea346ada8

DRW: Fix Eevee rendering broken due to recent changes

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

M	source/blender/draw/intern/draw_manager_exec.c
M	source/blender/gpu/intern/gpu_viewport.c

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

diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c
index 58839beac74..0290136e2ac 100644
--- a/source/blender/draw/intern/draw_manager_exec.c
+++ b/source/blender/draw/intern/draw_manager_exec.c
@@ -813,7 +813,7 @@ static void release_ubo_slots(bool with_persist)
 static void draw_update_uniforms(DRWShadingGroup *shgroup,
                                  int *obmats_loc,
                                  int *obinfos_loc,
-                                 int *drawid_loc)
+                                 int *baseinst_loc)
 {
   for (DRWUniform *uni = shgroup->uniforms; uni; uni = uni->next) {
     GPUTexture *tex;
@@ -881,7 +881,7 @@ static void draw_update_uniforms(DRWShadingGroup *shgroup,
         GPU_shader_uniform_buffer(shgroup->shader, uni->location, ubo);
         break;
       case DRW_UNIFORM_BASE_INSTANCE:
-        *drawid_loc = uni->location;
+        *baseinst_loc = uni->location;
         break;
     }
   }
@@ -945,7 +945,7 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
   bool use_tfeedback = false;
   int obmats_loc = -1;
   int obinfos_loc = -1;
-  int drawid_loc = -1;
+  int baseinst_loc = -1;
 
   if (shader_changed) {
     if (DST.shader) {
@@ -967,7 +967,7 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
   drw_state_set((pass_state & shgroup->state_extra_disable) | shgroup->state_extra);
   drw_stencil_set(shgroup->stencil_mask);
 
-  draw_update_uniforms(shgroup, &obmats_loc, &obinfos_loc, &drawid_loc);
+  draw_update_uniforms(shgroup, &obmats_loc, &obinfos_loc, &baseinst_loc);
 
   /* Rendering Calls */
   {
@@ -1001,10 +1001,13 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
         resource_chunk = handle.chunk;
       }
 
-      if (drawid_loc != -1) {
+      if (baseinst_loc != -1) {
         /* Fallback when ARB_shader_draw_parameters is not supported. */
         int id = handle.id;
-        GPU_shader_uniform_vector_int(shgroup->shader, drawid_loc, 1, 1, &id);
+        GPU_shader_uniform_vector_int(shgroup->shader, baseinst_loc, 1, 1, &id);
+      }
+
+      if (!GLEW_ARB_shader_draw_parameters) {
         base_inst = 0;
       }
       else {
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index da3a6ec48c8..c3aa633e706 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -662,8 +662,8 @@ void GPU_viewport_free(GPUViewport *viewport)
     GPU_uniformbuffer_free(viewport->vmempool.matrices_ubo[i]);
     GPU_uniformbuffer_free(viewport->vmempool.obinfos_ubo[i]);
   }
-  MEM_freeN(viewport->vmempool.matrices_ubo);
-  MEM_freeN(viewport->vmempool.obinfos_ubo);
+  MEM_SAFE_FREE(viewport->vmempool.matrices_ubo);
+  MEM_SAFE_FREE(viewport->vmempool.obinfos_ubo);
 
   DRW_instance_data_list_free(viewport->idatalist);
   MEM_freeN(viewport->idatalist);



More information about the Bf-blender-cvs mailing list