Commit: 59d878aa5c184067a1a61d8ef1d338cc1eea81a6
Author: Nick Wu
Date:   Wed Jul 4 13:32:40 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB59d878aa5c184067a1a61d8ef1d338cc1eea81a6

Fixed multithread RenderTriangle size error

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

M       source/blender/draw/engines/lanpr/lanpr_ops.c

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c 
b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 84bbb609ef5..a9b58fa5136 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -729,38 +729,23 @@ void THREAD_CalculateLineOcclusion(TaskPool *__restrict 
pool, LANPR_RenderTaskIn
 
                for (lip = (void *)rti->Contour; lip && lip->pPrev != 
rti->ContourPointers.pLast; lip = lip->pNext) {
                        lanpr_CalculateSingleLineOcclusion(rb, lip->p, 
rti->ThreadID);
-
-                       count++;
                }
-               //tnsset_PlusRenderContourProcessedCount(rb, count);
-               count = 0;
 
                for (lip = (void *)rti->Crease; lip && lip->pPrev != 
rti->CreasePointers.pLast; lip = lip->pNext) {
                        lanpr_CalculateSingleLineOcclusion(rb, lip->p, 
rti->ThreadID);
-                       count++;
                }
-               //tnsset_PlusRenderCreaseProcessedCount(rb, count);
-               count = 0;
 
                for (lip = (void *)rti->Intersection; lip && lip->pPrev != 
rti->IntersectionPointers.pLast; lip = lip->pNext) {
                        lanpr_CalculateSingleLineOcclusion(rb, lip->p, 
rti->ThreadID);
-                       count++;
                }
-               //tnsset_PlusRenderIntersectionProcessedCount(rb, count);
-               count = 0;
 
                for (lip = (void *)rti->Material; lip && lip->pPrev != 
rti->MaterialPointers.pLast; lip = lip->pNext) {
                        lanpr_CalculateSingleLineOcclusion(rb, lip->p, 
rti->ThreadID);
-                       count++;
                }
-               //tnsset_PlusRenderMaterialProcessedCount(rb, count);
-               count = 0;
-
        }
-       //thrd_exit(0);
 }
 void THREAD_CalculateLineOcclusion_Begin(LANPR_RenderBuffer* rb) {
-       int ThreadCount = BKE_render_num_threads(&rb->Scene->r);
+       int ThreadCount = rb->ThreadCount;
        LANPR_RenderTaskInfo* rti = 
MEM_callocN(sizeof(LANPR_RenderTaskInfo)*ThreadCount, "render task info");
        TaskScheduler *scheduler = BLI_task_scheduler_get();
        int i;
@@ -2569,15 +2554,15 @@ void lanpr_DestroyRenderData(LANPR_RenderBuffer *rb) {
        //tnsZeroGeomtryBuffers(rb->Scene);
 
        while (reln = lstPopItem(&rb->VertexBufferPointers)) {
-               FreeMem(reln->Pointer);
+               MEM_freeN(reln->Pointer);
        }
 
        while (reln = lstPopItem(&rb->LineBufferPointers)) {
-               FreeMem(reln->Pointer);
+               MEM_freeN(reln->Pointer);
        }
 
        while (reln = lstPopItem(&rb->TriangleBufferPointers)) {
-               FreeMem(reln->Pointer);
+               MEM_freeN(reln->Pointer);
        }
 
        BLI_spin_end(&rb->csData);
@@ -2614,7 +2599,7 @@ int lanpr_DrawEdgePreview(LANPR_RenderBuffer *rb, 
LANPR_LineLayer *OverrideLayer
 }
 
 int lanpr_GetRenderTriangleSize(LANPR_RenderBuffer *rb) {
-       rb->ThreadCount = rb->ThreadCount == 0 ? 1 : rb->ThreadCount;
+       if(rb->ThreadCount==0) rb->ThreadCount = 
BKE_render_num_threads(&rb->Scene->r);
        return sizeof(LANPR_RenderTriangle) + (sizeof(LANPR_RenderLine *) * 
rb->ThreadCount);
 }
 
@@ -2929,12 +2914,12 @@ static int lanpr_compute_feature_lines_exec(struct 
bContext *C, struct wmOperato
        /* need threading, later.... */
 
        rb = lanpr_CreateRenderBuffer(lanpr);
-
-       rb->TriangleSize = lanpr_GetRenderTriangleSize(rb);
        rb->Scene = scene;
        rb->W = scene->r.xsch;
        rb->H = scene->r.ysch;
 
+       rb->TriangleSize = lanpr_GetRenderTriangleSize(rb);
+
        lanpr_MakeRenderGeometryBuffers(depsgraph, scene, scene->camera, rb);
 
        lanpr_CullTriangles(rb);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to