Blender Git Loki
Git Commits -> Revision ff05f9c
Revision ff05f9c by Sergey Sharybin (cycles-x) March 18, 2021, 16:33 (GMT) |
Cycles: Initial implementation of GPUDisplay The idea of GPUDisplay is to take care of viewport texture update and drawing in a way that is the same exact from API point of view for both CPU and GPU rendering. This change moves a lot of code and refactors it in a more reusable and isolated building blocks to implement the GPUDIsplay for Blender viewport. The CPU rendering is same exact from users perspective. The GPU rendering currently does not use CUDA OpenGL buffers, which can potentially cause degradation in the performance. There is also a temporary half buffer in BlenderGPUDisplay, because it is not clear yet how to create OpenGL context, so that we can update texture from different thread than the drawing. The update of the GPUDisplay is performed by the Session. Ideally, this will be done in PathTracer so that it can avoid unnecessary updates if sample rendered quick enough. This behavior will need a bit deeper change in a way how TIleManager, Session::render() and PathTracer are communicating to each other. |
Commit Details:
Full Hash: ff05f9c5c2f693a8297655db44a905d7faff78f5
Parent Commit: cf87dc4
Lines Changed: +911, -313
4 Added Paths:
/intern/cycles/blender/blender_gpu_display.cpp (+496, -0) (View)
/intern/cycles/blender/blender_gpu_display.h (+177, -0) (View)
/intern/cycles/render/gpu_display.cpp (+30, -0) (View)
/intern/cycles/render/gpu_display.h (+85, -0) (View)
/intern/cycles/blender/blender_gpu_display.h (+177, -0) (View)
/intern/cycles/render/gpu_display.cpp (+30, -0) (View)
/intern/cycles/render/gpu_display.h (+85, -0) (View)
15 Modified Paths:
/intern/cycles/blender/blender_session.cpp (+7, -12) (Diff)
/intern/cycles/blender/blender_sync.cpp (+0, -3) (Diff)
/intern/cycles/blender/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/device/cuda/device_cuda_impl.cpp (+13, -0) (Diff)
/intern/cycles/device/cuda/device_cuda_impl.h (+2, -0) (Diff)
/intern/cycles/device/device.cpp (+4, -0) (Diff)
/intern/cycles/device/device.h (+10, -0) (Diff)
/intern/cycles/device/multi/device_multi.cpp (+2, -0) (Diff)
/intern/cycles/integrator/path_trace.cpp (+28, -11) (Diff)
/intern/cycles/integrator/path_trace.h (+5, -3) (Diff)
/intern/cycles/render/buffers.cpp (+2, -0) (Diff)
/intern/cycles/render/buffers.h (+2, -0) (Diff)
/intern/cycles/render/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/render/session.cpp (+35, -258) (Diff)
/intern/cycles/render/session.h (+9, -26) (Diff)
/intern/cycles/blender/blender_sync.cpp (+0, -3) (Diff)
/intern/cycles/blender/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/device/cuda/device_cuda_impl.cpp (+13, -0) (Diff)
/intern/cycles/device/cuda/device_cuda_impl.h (+2, -0) (Diff)
/intern/cycles/device/device.cpp (+4, -0) (Diff)
/intern/cycles/device/device.h (+10, -0) (Diff)
/intern/cycles/device/multi/device_multi.cpp (+2, -0) (Diff)
/intern/cycles/integrator/path_trace.cpp (+28, -11) (Diff)
/intern/cycles/integrator/path_trace.h (+5, -3) (Diff)
/intern/cycles/render/buffers.cpp (+2, -0) (Diff)
/intern/cycles/render/buffers.h (+2, -0) (Diff)
/intern/cycles/render/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/render/session.cpp (+35, -258) (Diff)
/intern/cycles/render/session.h (+9, -26) (Diff)