Page MenuHome

Cycles: Display RenderPass in Viewport
ClosedPublic

Authored by Jeroen Bakker (jbakker) on Thu, Sep 5, 12:47 PM.

Details

Summary

This change allows the user to select a renderpass that will be displayed in the 3d viewport.

Added support for external renderers to extend the View3DShading struct. So that Blender has no need to know what feature the render engine wants to support. Note that the View3DShading is also available in the scene->display.shading although this is also supported, it does not make sense for render engines to put something here as it is really scene/workbench related.

Unresolved issues

Currently cycles assumes that it always needs to calculate the combined pass; it ignores the pass_flag in KernelFilm. We could optimize the
viewport rendering by adding this check. I propose to do this in a later patch as it influences final rendering.

Diff Detail

Repository
rB Blender

Event Timeline

Jeroen Bakker (jbakker) retitled this revision from Cycles: Display RenderPass in Viewport to [WIP] Cycles: Display RenderPass in Viewport.Thu, Sep 5, 12:48 PM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)Thu, Sep 5, 12:59 PM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)

Indirect and direct color passes are now similar to final render passes

Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)Thu, Sep 5, 5:03 PM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)Fri, Sep 6, 12:09 PM
Jeroen Bakker (jbakker) updated this revision to Diff 17897.
  • Renamed tonemapping to copy_to_display_buffer. Still need to change the byte buffer. It isn't used in blender, but could be by other softwares
  • Added a IPProperty to View3DShading so external render engines can add their custom shading properties there.
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)Fri, Sep 6, 12:16 PM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)Fri, Sep 6, 2:25 PM
Jeroen Bakker (jbakker) updated this revision to Diff 17898.

Disabled NORMAL and UV passes

Loading and saving of the shading settings
limited byte array support

Writing and reading files

Jeroen Bakker (jbakker) retitled this revision from [WIP] Cycles: Display RenderPass in Viewport to Cycles: Display RenderPass in Viewport.Fri, Sep 6, 3:44 PM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)
intern/cycles/blender/addon/properties.py
172–173

Move AO and Shadow after Background.

intern/cycles/render/film.cpp
270

Maybe changing this to 0.0 will make normals and UVs work?

source/blender/blenloader/intern/readfile.c
6358–6362

This code should not run for the sce->display.shading case. Changing UI data on load is ok, scene data not so much.

Jeroen Bakker (jbakker) marked 3 inline comments as done.Tue, Sep 10, 10:29 AM
Jeroen Bakker (jbakker) updated this revision to Diff 18023.
  • Fixed UV + Normal pass
  • Do not change the scene shading during loading

Allocate the correct size of result buffer. So we don't get overflows when
displaying 1x pixel size.

Brecht Van Lommel (brecht) requested changes to this revision.Tue, Sep 10, 5:37 PM

Changing from Combined to Ambient Occlusion shows black, until I tweak e.g. the max bounces in render properties to force a refresh.

intern/cycles/blender/addon/properties.py
155–184

Suggest to organize like this:

('', "General", ""),
  
('COMBINED', "Combined", "Show the Combined Render pass", 1),
('EMISSION', "Emission", "Show the Emission render pass", 33),
('BACKGROUND', "Background", "Show the Background render pass", 34),
('AO', "Ambient Occlusion", "Show the Ambient Occlusion render pass", 35),
  
('', "Light", ""),
  
('DIFFUSE_DIRECT', "Diffuse Direct", "Show the Diffuse Direct render pass", 38),
('DIFFUSE_INDIRECT', "Diffuse Indirect", "Show the Diffuse Indirect render pass", 39),
('DIFFUSE_COLOR', "Diffuse Color", "Show the Diffuse Color render pass", 40),
  
('GLOSSY_DIRECT', "Glossy Direct", "Show the Glossy Direct render pass", 41),
('GLOSSY_INDIRECT', "Glossy Indirect", "Show the Glossy Indirect render pass", 42),
('GLOSSY_COLOR', "Glossy Color", "Show the Glossy Color render pass", 43),
  
('TRANSMISSION_DIRECT', "Transmission Direct", "Show the Transmission Direct render pass", 44),
('TRANSMISSION_INDIRECT', "Transmission Indirect", "Show the Transmission Indirect render pass", 45),
('TRANSMISSION_COLOR', "Transmission Color", "Show the Transmission Color render pass", 46),
  
('', "", ""),
  
('SUBSURFACE_DIRECT', "Subsurface Direct", "Show the Subsurface Direct render pass", 47),
('SUBSURFACE_INDIRECT', "Subsurface Indirect", "Show the Subsurface Indirect render pass", 48),
('SUBSURFACE_COLOR', "Subsurface Color", "Show the Subsurface Color render pass", 49),
  
('VOLUME_DIRECT', "Volume Direct", "Show the Volume Direct render pass", 50),
('VOLUME_INDIRECT', "Volume Indirect", "Show the Volume Indirect render pass", 51),
  
('', "Data", ""),
  
('NORMAL', "Normal", "Show the Normal render pass", 3),
('UV', "UV", "Show the UV render pass", 4),
('MIST', "Mist", "Show the Mist render pass", 32),
intern/cycles/blender/addon/ui.py
2092

It's a bit strange in the middle of these lighting settings.

It can be moved into a separate subpanel instead:

diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 73bb499..8676f48 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -2050,6 +2050,25 @@ class CYCLES_RENDER_PT_simplify_culling(CyclesButtonsPanel, Panel):
         sub.prop(cscene, "distance_cull_margin", text="Distance")
 
 
+class CYCLES_VIEW3D_PT_shading_render_pass(Panel):
+    bl_space_type = 'VIEW_3D'
+    bl_region_type = 'HEADER'
+    bl_label = "Render Pass"
+    bl_parent_id = 'VIEW3D_PT_shading'
+    COMPAT_ENGINES = {'CYCLES'}
+
+    @classmethod
+    def poll(cls, context):
+        return (context.engine in cls.COMPAT_ENGINES
+            and context.space_data.shading.type == 'RENDERED')
+
+    def draw(self, context):
+        shading = context.space_data.shading
+
+        layout = self.layout
+        layout.prop(shading.cycles, "render_pass", text="")
+
+
 class CYCLES_VIEW3D_PT_shading_lighting(Panel):
     bl_space_type = 'VIEW_3D'
     bl_region_type = 'HEADER'
@@ -2173,6 +2192,7 @@ classes = (
     CYCLES_RENDER_PT_simplify_render,
     CYCLES_RENDER_PT_simplify_culling,
     CYCLES_VIEW3D_PT_shading_lighting,
+    CYCLES_VIEW3D_PT_shading_render_pass,
     CYCLES_RENDER_PT_motion_blur,
     CYCLES_RENDER_PT_motion_blur_curve,
     CYCLES_RENDER_PT_film,
intern/cycles/blender/blender_sync.cpp
348–350

Deduplicate this code with the one in blender_camera.cpp.

352

free_memory() -> clear()

353

Add a comment saying we always need a combined pass for now, and that it would be a good optimization to support rendering without combined pass.

intern/cycles/kernel/kernel_types.h
1172–1177

Move these to the end of the struct. For performance we want flags used together to be adjacent.

intern/cycles/render/film.cpp
103

Was this change intentional?

521

I think it's better to just change the default value in film.cpp.

Doing it just in the kernel data structures risk things going out of sync.

522

Note that this just disables light passes accumulation, not lighting calculations.

Which is ok and we can optimize this later, but just to correct the comment.

This revision now requires changes to proceed.Tue, Sep 10, 5:37 PM
Jeroen Bakker (jbakker) marked 9 inline comments as done.Wed, Sep 11, 9:38 AM
Jeroen Bakker (jbakker) edited the summary of this revision. (Show Details)
Jeroen Bakker (jbakker) updated this revision to Diff 18078.

Solved issues from code review

intern/cycles/kernel/kernel_types.h
1172–1177

We could also combine use_display_exposure and use_display_pass_alpha in a display_flags.

intern/cycles/render/film.cpp
103

It is a NOP operation as exposure is always false. Will revert it as we don't support shadow passes in the viewport.

Jeroen Bakker (jbakker) planned changes to this revision.EditedWed, Sep 11, 9:39 AM

Sometimes it still crashes when writing outside of allocated memory.

==30499==ERROR: AddressSanitizer: heap-use-after-free on address 0x7f4f01888530 at pc 0x56450dfb2f2a bp 0x7f4f180caa80 sp 0x7f4f180caa70
READ of size 16 at 0x7f4f01888530 thread T90
==30499==AddressSanitizer: while reporting a bug found another one. Ignoring.
==30499==AddressSanitizer: while reporting a bug found another one. Ignoring.
==30499==AddressSanitizer: while reporting a bug found another one. Ignoring.
    #0 0x56450dfb2f29 in operator+ /home/jeroen/blender-git/blender/intern/cycles/kernel/../util/util_math_float3.h:156
    #1 0x56450dfb2f29 in operator+= /home/jeroen/blender-git/blender/intern/cycles/kernel/../util/util_math_float3.h:173
    #2 0x56450dfb2f29 in kernel_write_pass_float3 /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernel_passes.h:47
    #3 0x56450dfb2f29 in kernel_write_data_passes /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernel_passes.h:257
    #4 0x56450dfb2f29 in kernel_path_shader_apply /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernel_path.h:304
    #5 0x56450dfb2f29 in kernel_path_integrate /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernel_path.h:571
    #6 0x56450dfb2f29 in kernel_path_trace /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernel_path.h:675
    #7 0x56450e115b6d in ccl::kernel_cpu_avx2_path_trace(ccl::KernelGlobals*, float*, int, int, int, int, int) /home/jeroen/blender-git/blender/intern/cycles/kernel/../kernel/kernels/cpu/kernel_cpu_impl.h:90
    #8 0x564508e41a25 in ccl::CPUDevice::path_trace(ccl::DeviceTask&, ccl::RenderTile&, ccl::KernelGlobals*) (/home/jeroen/blender-git/build_linux/bin/blender+0x24267a25)
    #9 0x564508e44926 in ccl::CPUDevice::thread_render(ccl::DeviceTask&) (/home/jeroen/blender-git/build_linux/bin/blender+0x2426a926)
    #10 0x564508e3a5aa in ccl::CPUDevice::thread_run(ccl::DeviceTask*) (/home/jeroen/blender-git/build_linux/bin/blender+0x242605aa)
    #11 0x564508e7bd66 in void std::__invoke_impl<void, void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&>(std::__invoke_memfun_deref, void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&) /usr/include/c++/7/bits/invoke.h:73
    #12 0x564508e7803b in std::__invoke_result<void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&>::type std::__invoke<void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&>(void (ccl::CPUDevice::*&)(ccl::DeviceTask*), ccl::CPUDevice*&, ccl::CPUDevice::CPUDeviceTask*&) /usr/include/c++/7/bits/invoke.h:95
    #13 0x564508e73e02 in void std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)>::__call<void, int&&, 0ul, 1ul>(std::tuple<int&&>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/7/functional:467
    #14 0x564508e6ae44 in void std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)>::operator()<int, void>(int&&) /usr/include/c++/7/functional:551
    #15 0x564508e6311c in std::_Function_handler<void (int), std::_Bind<void (ccl::CPUDevice::*(ccl::CPUDevice*, ccl::CPUDevice::CPUDeviceTask*))(ccl::DeviceTask*)> >::_M_invoke(std::_Any_data const&, int&&) /usr/include/c++/7/bits/std_function.h:316
    #16 0x564514181911 in std::function<void (int)>::operator()(int) const /usr/include/c++/7/bits/std_function.h:706
    #17 0x56451417e1ef in ccl::TaskScheduler::thread_run(int) /home/jeroen/blender-git/blender/intern/cycles/util/util_task.cpp:396
    #18 0x564514189ea4 in void std::__invoke_impl<void, void (*&)(int), int&>(std::__invoke_other, void (*&)(int), int&) /usr/include/c++/7/bits/invoke.h:60
    #19 0x5645141892d3 in std::__invoke_result<void (*&)(int), int&>::type std::__invoke<void (*&)(int), int&>(void (*&)(int), int&) /usr/include/c++/7/bits/invoke.h:95
    #20 0x5645141880a3 in void std::_Bind<void (*(int))(int)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (/home/jeroen/blender-git/build_linux/bin/blender+0x2f5ae0a3)
    #21 0x564514186705 in void std::_Bind<void (*(int))(int)>::operator()<, void>() /usr/include/c++/7/functional:551
    #22 0x5645141849c6 in std::_Function_handler<void (), std::_Bind<void (*(int))(int)> >::_M_invoke(std::_Any_data const&) /usr/include/c++/7/bits/std_function.h:316
    #23 0x564503efe4a6 in std::function<void ()>::operator()() const /usr/include/c++/7/bits/std_function.h:706
    #24 0x56451418bbbb in ccl::thread::run(void*) /home/jeroen/blender-git/blender/intern/cycles/util/util_thread.cpp:52
    #25 0x56451418cd1f in void* std::__invoke_impl<void*, void* (*)(void*), ccl::thread*>(std::__invoke_other, void* (*&&)(void*), ccl::thread*&&) /usr/include/c++/7/bits/invoke.h:60
    #26 0x56451418c491 in std::__invoke_result<void* (*)(void*), ccl::thread*>::type std::__invoke<void* (*)(void*), ccl::thread*>(void* (*&&)(void*), ccl::thread*&&) /usr/include/c++/7/bits/invoke.h:96
    #27 0x56451418dc6f in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (/home/jeroen/blender-git/build_linux/bin/blender+0x2f5b3c6f)
    #28 0x56451418db4b in std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> >::operator()() (/home/jeroen/blender-git/build_linux/bin/blender+0x2f5b3b4b)
    #29 0x56451418da8c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void* (*)(void*), ccl::thread*> > >::_M_run() (/home/jeroen/blender-git/build_linux/bin/blender+0x2f5b3a8c)
    #30 0x7f4f86ec966e  (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbd66e)
    #31 0x7f4f8c64b6da in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
    #32 0x7f4f8765488e in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x12188e)

0x7f4f01888530 is located 40240 bytes inside of 11938560-byte region [0x7f4f0187e800,0x7f4f023e1300)
freed by thread T0 here:
    #0 0x7f4f8fce37b8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7b8)
    #1 0x564508195ec5 in genTangSpace /home/jeroen/blender-git/blender/intern/mikktspace/mikktspace.c:456
    #2 0x5645081934fc in genTangSpaceDefault /home/jeroen/blender-git/blender/intern/mikktspace/mikktspace.c:259
    #3 0x5645040682c2 in mikk_compute_tangents /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:276
    #4 0x56450406d31a in attr_create_uv_map /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:432
    #5 0x564504078f0f in create_mesh /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:807
    #6 0x56450408067e in ccl::BlenderSync::sync_mesh(BL::Depsgraph&, BL::Object&, BL::Object&, bool, bool, bool) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:1034
    #7 0x564503f8e635 in ccl::BlenderSync::sync_object(BL::Depsgraph&, BL::ViewLayer&, BL::DepsgraphObjectInstance&, float, bool, bool, bool, ccl::BlenderObjectCulling&, bool*) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_object.cpp:407
    #8 0x564503f91e13 in ccl::BlenderSync::sync_objects(BL::Depsgraph&, BL::SpaceView3D&, float) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_object.cpp:561
    #9 0x564503f22014 in ccl::BlenderSync::sync_data(BL::RenderSettings&, BL::Depsgraph&, BL::SpaceView3D&, BL::Object&, int, int, void**) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_sync.cpp:218
    #10 0x564503eef8a6 in ccl::BlenderSession::synchronize(BL::Depsgraph&) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_session.cpp:882
    #11 0x564503ebe6ab in sync_func /home/jeroen/blender-git/blender/intern/cycles/blender/blender_python.cpp:401
    #12 0x7f4f8f045948 in _PyMethodDef_RawFastCallKeywords (/usr/lib/x86_64-linux-gnu/libpython3.7m.so.1.0+0x244948)

previously allocated by thread T0 here:
    #0 0x7f4f8fce3b50 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb50)
    #1 0x564508194eee in genTangSpace /home/jeroen/blender-git/blender/intern/mikktspace/mikktspace.c:363
    #2 0x5645081934fc in genTangSpaceDefault /home/jeroen/blender-git/blender/intern/mikktspace/mikktspace.c:259
    #3 0x5645040682c2 in mikk_compute_tangents /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:276
    #4 0x56450406d31a in attr_create_uv_map /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:432
    #5 0x564504078f0f in create_mesh /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:807
    #6 0x56450408067e in ccl::BlenderSync::sync_mesh(BL::Depsgraph&, BL::Object&, BL::Object&, bool, bool, bool) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_mesh.cpp:1034
    #7 0x564503f8e635 in ccl::BlenderSync::sync_object(BL::Depsgraph&, BL::ViewLayer&, BL::DepsgraphObjectInstance&, float, bool, bool, bool, ccl::BlenderObjectCulling&, bool*) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_object.cpp:407
    #8 0x564503f91e13 in ccl::BlenderSync::sync_objects(BL::Depsgraph&, BL::SpaceView3D&, float) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_object.cpp:561
    #9 0x564503f22014 in ccl::BlenderSync::sync_data(BL::RenderSettings&, BL::Depsgraph&, BL::SpaceView3D&, BL::Object&, int, int, void**) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_sync.cpp:218
    #10 0x564503eef8a6 in ccl::BlenderSession::synchronize(BL::Depsgraph&) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_session.cpp:882
    #11 0x564503ebe6ab in sync_func /home/jeroen/blender-git/blender/intern/cycles/blender/blender_python.cpp:401
    #12 0x7f4f8f045948 in _PyMethodDef_RawFastCallKeywords (/usr/lib/x86_64-linux-gnu/libpython3.7m.so.1.0+0x244948)

Thread T90 created by T0 here:
    #0 0x7f4f8fc3cd2f in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x37d2f)
    #1 0x7f4f86ec9924 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbd924)
    #2 0x56451418b88c in ccl::thread::thread(std::function<void ()>, int) /home/jeroen/blender-git/blender/intern/cycles/util/util_thread.cpp:35
    #3 0x56451417d395 in ccl::TaskScheduler::init(int) /home/jeroen/blender-git/blender/intern/cycles/util/util_task.cpp:338
    #4 0x56451373d3bb in ccl::Session::Session(ccl::SessionParams const&) /home/jeroen/blender-git/blender/intern/cycles/render/session.cpp:62
    #5 0x564503edf7a7 in ccl::BlenderSession::create_session() /home/jeroen/blender-git/blender/intern/cycles/blender/blender_session.cpp:131
    #6 0x564503ee21b7 in ccl::BlenderSession::reset_session(BL::BlendData&, BL::Depsgraph&) /home/jeroen/blender-git/blender/intern/cycles/blender/blender_session.cpp:202
    #7 0x564503ebe3a1 in reset_func /home/jeroen/blender-git/blender/intern/cycles/blender/blender_python.cpp:379
    #8 0x7f4f8f045948 in _PyMethodDef_RawFastCallKeywords (/usr/lib/x86_64-linux-gnu/libpython3.7m.so.1.0+0x244948)

SUMMARY: AddressSanitizer: heap-use-after-free /home/jeroen/blender-git/blender/intern/cycles/kernel/../util/util_math_float3.h:156 in operator+
Shadow bytes around the buggy address:
  0x0fea60309050: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea60309060: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea60309070: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea60309080: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea60309090: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0fea603090a0: fd fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd
  0x0fea603090b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea603090c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea603090d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea603090e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fea603090f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==30499==ABORTING
Jeroen Bakker (jbakker) updated this revision to Diff 18084.EditedWed, Sep 11, 11:11 AM

Solved crash; ready for new review round

The cause was that by mistake I cleared the wrong Pass buffer and not cleared the other one, making the pass strides incorrect. I removed the default parameter value so it is always clear what is being used.

This revision is now accepted and ready to land.Wed, Sep 11, 11:24 AM
This revision was automatically updated to reflect the committed changes.