[Bf-blender-cvs] [0b75e68500f] soc-2018-npr: Fixed lanpr field always NULL error. (caused by depsgraph scene copy)
Nick Wu
noreply at git.blender.org
Tue Aug 14 07:44:56 CEST 2018
Commit: 0b75e68500f6eda1c3e92667b3bdaa8bf1a1026b
Author: Nick Wu
Date: Tue Aug 14 13:39:44 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB0b75e68500f6eda1c3e92667b3bdaa8bf1a1026b
Fixed lanpr field always NULL error. (caused by depsgraph scene copy)
===================================================================
M source/blender/draw/engines/lanpr/lanpr_all.h
M source/blender/draw/engines/lanpr/lanpr_dpix.c
M source/blender/draw/engines/lanpr/lanpr_engine.c
M source/blender/draw/engines/lanpr/lanpr_ops.c
M source/blender/draw/engines/lanpr/lanpr_snake.c
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h b/source/blender/draw/engines/lanpr/lanpr_all.h
index 3188a0beaa9..460d3d1aad2 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -49,8 +49,12 @@
#define tnsLinearItp(L, R, T) \
((L) * (1.0f - (T)) + (R)*(T))
+typedef struct LANPR_RenderBuffer LANPR_RenderBuffer;
-typedef struct LANPRSharedResource {
+typedef struct LANPR_SharedResource {
+
+ /* We only allocate once for all */
+ LANPR_RenderBuffer *render_buffer_shared;
/* Snake */
GPUShader *multichannel_shader;
@@ -76,7 +80,7 @@ typedef struct LANPRSharedResource {
int during_render; // get/set using access funcion which uses render_flag_lock to lock.
// this prevents duplicate too much resource. (no render preview in viewport while rendering)
-} LANPRSharedResource;
+} LANPR_SharedResource;
#define TNS_DPIX_TEXTURE_SIZE 2048
diff --git a/source/blender/draw/engines/lanpr/lanpr_dpix.c b/source/blender/draw/engines/lanpr/lanpr_dpix.c
index 6f27be1bf2e..634d59ad8f3 100644
--- a/source/blender/draw/engines/lanpr/lanpr_dpix.c
+++ b/source/blender/draw/engines/lanpr/lanpr_dpix.c
@@ -25,7 +25,7 @@
#include <math.h>
-extern LANPRSharedResource lanpr_share;
+extern LANPR_SharedResource lanpr_share;
extern char datatoc_lanpr_dpix_project_passthrough_vert_glsl[];
extern char datatoc_lanpr_dpix_project_clip_frag_glsl[];
extern char datatoc_lanpr_dpix_preview_geom_glsl[];
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 7ba0427b65e..db35244ef1d 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -44,7 +44,7 @@ extern char datatoc_lanpr_software_passthrough_vert_glsl[];
extern char datatoc_gpu_shader_2D_smooth_color_vert_glsl[];
extern char datatoc_gpu_shader_2D_smooth_color_frag_glsl[];
-LANPRSharedResource lanpr_share;
+LANPR_SharedResource lanpr_share;
static void lanpr_engine_init(void *ved){
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index fe0bb77351b..78a2e2f569a 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -2620,6 +2620,8 @@ void lanpr_clear_render_state(LANPR_RenderBuffer *rb) {
/* ====================================== render control ======================================= */
+extern LANPR_SharedResource lanpr_share;
+
void lanpr_destroy_render_data(LANPR_RenderBuffer *rb) {
LANPR_RenderElementLinkNode *reln;
@@ -2664,7 +2666,8 @@ void lanpr_destroy_render_data(LANPR_RenderBuffer *rb) {
}
LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr) {
- if (lanpr->render_buffer) {
+ if (lanpr_share.render_buffer_shared) {
+ lanpr->render_buffer = lanpr_share.render_buffer_shared;
lanpr_destroy_render_data(lanpr->render_buffer);
return lanpr->render_buffer;
//lanpr_destroy_render_data(lanpr->render_buffer);
@@ -2674,6 +2677,7 @@ LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr) {
LANPR_RenderBuffer *rb = MEM_callocN(sizeof(LANPR_RenderBuffer), "creating LANPR render buffer");
lanpr->render_buffer = rb;
+ lanpr_share.render_buffer_shared = rb;
rb->cached_for_frame = -1;
@@ -2999,8 +3003,6 @@ void lanpr_viewport_draw_offline_result(LANPR_TextureList *txl, LANPR_Framebuffe
void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_threshold);
-extern LANPRSharedResource lanpr_share;
-
void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render) {
LANPR_LineLayer *ll;
LANPR_PassList *psl = ((LANPR_Data *)vedata)->psl;
diff --git a/source/blender/draw/engines/lanpr/lanpr_snake.c b/source/blender/draw/engines/lanpr/lanpr_snake.c
index 319f089f8e9..9c53f10fca5 100644
--- a/source/blender/draw/engines/lanpr/lanpr_snake.c
+++ b/source/blender/draw/engines/lanpr/lanpr_snake.c
@@ -20,7 +20,7 @@
#include "GPU_viewport.h"
#include "bmesh.h"
-extern struct LANPRSharedResource lanpr_share;
+extern struct LANPR_SharedResource lanpr_share;
int _TNS_colOffsets[] = { -1, 0, 1, 1, 1, 0, -1, -1 };
int _TNS_rowOffsets[] = { -1, -1, -1, 0, 1, 1, 1, 0 };
More information about the Bf-blender-cvs
mailing list