[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