Commit: 1df3b51988852fa8ee6b530a64aa23346db9acd4 Author: Brecht Van Lommel Date: Sun Oct 17 16:10:10 2021 +0200 Branches: master https://developer.blender.org/rB1df3b51988852fa8ee6b530a64aa23346db9acd4
Cycles: replace integrator state argument macros * Rename struct KernelGlobals to struct KernelGlobalsCPU * Add KernelGlobals, IntegratorState and ConstIntegratorState typedefs that every device can define in its own way. * Remove INTEGRATOR_STATE_ARGS and INTEGRATOR_STATE_PASS macros and replace with these new typedefs. * Add explicit state argument to INTEGRATOR_STATE and similar macros In preparation for decoupling main and shadow paths. Differential Revision: https://developer.blender.org/D12888 =================================================================== M intern/cycles/bvh/bvh_embree.cpp M intern/cycles/device/cpu/device_impl.h M intern/cycles/device/cpu/kernel.h M intern/cycles/device/cpu/kernel_thread_globals.cpp M intern/cycles/device/cpu/kernel_thread_globals.h M intern/cycles/integrator/path_trace_work_cpu.cpp M intern/cycles/integrator/path_trace_work_cpu.h M intern/cycles/integrator/shader_eval.cpp M intern/cycles/kernel/bvh/bvh.h M intern/cycles/kernel/bvh/bvh_embree.h M intern/cycles/kernel/bvh/bvh_local.h M intern/cycles/kernel/bvh/bvh_nodes.h M intern/cycles/kernel/bvh/bvh_shadow_all.h M intern/cycles/kernel/bvh/bvh_traversal.h M intern/cycles/kernel/bvh/bvh_util.h M intern/cycles/kernel/bvh/bvh_volume.h M intern/cycles/kernel/bvh/bvh_volume_all.h M intern/cycles/kernel/closure/bsdf.h M intern/cycles/kernel/closure/bsdf_hair_principled.h M intern/cycles/kernel/closure/bsdf_microfacet.h M intern/cycles/kernel/closure/bsdf_microfacet_multi.h M intern/cycles/kernel/device/cpu/globals.h M intern/cycles/kernel/device/cpu/image.h M intern/cycles/kernel/device/cpu/kernel.cpp M intern/cycles/kernel/device/cpu/kernel.h M intern/cycles/kernel/device/cpu/kernel_arch.h M intern/cycles/kernel/device/cpu/kernel_arch_impl.h M intern/cycles/kernel/device/cuda/globals.h M intern/cycles/kernel/device/gpu/image.h M intern/cycles/kernel/device/gpu/kernel.h M intern/cycles/kernel/device/optix/globals.h M intern/cycles/kernel/geom/geom_attribute.h M intern/cycles/kernel/geom/geom_curve.h M intern/cycles/kernel/geom/geom_curve_intersect.h M intern/cycles/kernel/geom/geom_motion_curve.h M intern/cycles/kernel/geom/geom_motion_triangle.h M intern/cycles/kernel/geom/geom_motion_triangle_intersect.h M intern/cycles/kernel/geom/geom_motion_triangle_shader.h M intern/cycles/kernel/geom/geom_object.h M intern/cycles/kernel/geom/geom_patch.h M intern/cycles/kernel/geom/geom_primitive.h M intern/cycles/kernel/geom/geom_shader_data.h M intern/cycles/kernel/geom/geom_subd_triangle.h M intern/cycles/kernel/geom/geom_triangle.h M intern/cycles/kernel/geom/geom_triangle_intersect.h M intern/cycles/kernel/geom/geom_volume.h M intern/cycles/kernel/integrator/integrator_init_from_bake.h M intern/cycles/kernel/integrator/integrator_init_from_camera.h M intern/cycles/kernel/integrator/integrator_intersect_closest.h M intern/cycles/kernel/integrator/integrator_intersect_shadow.h M intern/cycles/kernel/integrator/integrator_intersect_subsurface.h M intern/cycles/kernel/integrator/integrator_intersect_volume_stack.h M intern/cycles/kernel/integrator/integrator_megakernel.h M intern/cycles/kernel/integrator/integrator_shade_background.h M intern/cycles/kernel/integrator/integrator_shade_light.h M intern/cycles/kernel/integrator/integrator_shade_shadow.h M intern/cycles/kernel/integrator/integrator_shade_surface.h M intern/cycles/kernel/integrator/integrator_shade_volume.h M intern/cycles/kernel/integrator/integrator_state.h M intern/cycles/kernel/integrator/integrator_state_flow.h M intern/cycles/kernel/integrator/integrator_state_util.h M intern/cycles/kernel/integrator/integrator_subsurface.h M intern/cycles/kernel/integrator/integrator_subsurface_disk.h M intern/cycles/kernel/integrator/integrator_subsurface_random_walk.h M intern/cycles/kernel/integrator/integrator_volume_stack.h M intern/cycles/kernel/kernel_accumulate.h M intern/cycles/kernel/kernel_adaptive_sampling.h M intern/cycles/kernel/kernel_bake.h M intern/cycles/kernel/kernel_camera.h M intern/cycles/kernel/kernel_color.h M intern/cycles/kernel/kernel_emission.h M intern/cycles/kernel/kernel_id_passes.h M intern/cycles/kernel/kernel_jitter.h M intern/cycles/kernel/kernel_light.h M intern/cycles/kernel/kernel_light_background.h M intern/cycles/kernel/kernel_light_common.h M intern/cycles/kernel/kernel_lookup_table.h M intern/cycles/kernel/kernel_passes.h M intern/cycles/kernel/kernel_path_state.h M intern/cycles/kernel/kernel_random.h M intern/cycles/kernel/kernel_shader.h M intern/cycles/kernel/kernel_shadow_catcher.h M intern/cycles/kernel/kernel_types.h M intern/cycles/kernel/osl/osl_closures.cpp M intern/cycles/kernel/osl/osl_services.cpp M intern/cycles/kernel/osl/osl_services.h M intern/cycles/kernel/osl/osl_shader.cpp M intern/cycles/kernel/osl/osl_shader.h M intern/cycles/kernel/svm/svm.h M intern/cycles/kernel/svm/svm_ao.h M intern/cycles/kernel/svm/svm_aov.h M intern/cycles/kernel/svm/svm_attribute.h M intern/cycles/kernel/svm/svm_bevel.h M intern/cycles/kernel/svm/svm_blackbody.h M intern/cycles/kernel/svm/svm_brick.h M intern/cycles/kernel/svm/svm_bump.h M intern/cycles/kernel/svm/svm_camera.h M intern/cycles/kernel/svm/svm_checker.h M intern/cycles/kernel/svm/svm_clamp.h M intern/cycles/kernel/svm/svm_closure.h M intern/cycles/kernel/svm/svm_convert.h M intern/cycles/kernel/svm/svm_displace.h M intern/cycles/kernel/svm/svm_geometry.h M intern/cycles/kernel/svm/svm_hsv.h M intern/cycles/kernel/svm/svm_ies.h M intern/cycles/kernel/svm/svm_image.h M intern/cycles/kernel/svm/svm_light_path.h M intern/cycles/kernel/svm/svm_magic.h M intern/cycles/kernel/svm/svm_map_range.h M intern/cycles/kernel/svm/svm_mapping.h M intern/cycles/kernel/svm/svm_math.h M intern/cycles/kernel/svm/svm_mix.h M intern/cycles/kernel/svm/svm_musgrave.h M intern/cycles/kernel/svm/svm_noisetex.h M intern/cycles/kernel/svm/svm_normal.h M intern/cycles/kernel/svm/svm_ramp.h M intern/cycles/kernel/svm/svm_sepcomb_hsv.h M intern/cycles/kernel/svm/svm_sky.h M intern/cycles/kernel/svm/svm_tex_coord.h M intern/cycles/kernel/svm/svm_value.h M intern/cycles/kernel/svm/svm_vector_transform.h M intern/cycles/kernel/svm/svm_vertex_color.h M intern/cycles/kernel/svm/svm_voronoi.h M intern/cycles/kernel/svm/svm_voxel.h M intern/cycles/kernel/svm/svm_wave.h M intern/cycles/kernel/svm/svm_wavelength.h M intern/cycles/kernel/svm/svm_white_noise.h M intern/cycles/kernel/svm/svm_wireframe.h =================================================================== diff --git a/intern/cycles/bvh/bvh_embree.cpp b/intern/cycles/bvh/bvh_embree.cpp index 76fcdf539ea..343d62dedf4 100644 --- a/intern/cycles/bvh/bvh_embree.cpp +++ b/intern/cycles/bvh/bvh_embree.cpp @@ -73,7 +73,7 @@ static void rtc_filter_occluded_func(const RTCFilterFunctionNArguments *args) const RTCRay *ray = (RTCRay *)args->ray; RTCHit *hit = (RTCHit *)args->hit; CCLIntersectContext *ctx = ((IntersectContext *)args->context)->userRayExt; - const KernelGlobals *kg = ctx->kg; + const KernelGlobalsCPU *kg = ctx->kg; switch (ctx->type) { case CCLIntersectContext::RAY_SHADOW_ALL: { diff --git a/intern/cycles/device/cpu/device_impl.h b/intern/cycles/device/cpu/device_impl.h index 371d2258104..944c61e29f7 100644 --- a/intern/cycles/device/cpu/device_impl.h +++ b/intern/cycles/device/cpu/device_impl.h @@ -44,7 +44,7 @@ CCL_NAMESPACE_BEGIN class CPUDevice : public Device { public: - KernelGlobals kernel_globals; + KernelGlobalsCPU kernel_globals; device_vector<TextureInfo> texture_info; bool need_texture_info; diff --git a/intern/cycles/device/cpu/kernel.h b/intern/cycles/device/cpu/kernel.h index b5f0d873f30..2db09057e44 100644 --- a/intern/cycles/device/cpu/kernel.h +++ b/intern/cycles/device/cpu/kernel.h @@ -21,7 +21,7 @@ CCL_NAMESPACE_BEGIN -struct KernelGlobals; +struct KernelGlobalsCPU; struct IntegratorStateCPU; struct TileInfo; @@ -30,10 +30,10 @@ class CPUKernels { /* Integrator. */ using IntegratorFunction = - CPUKernelFunction<void (*)(const KernelGlobals *kg, IntegratorStateCPU *state)>; + CPUKernelFunction<void (*)(const KernelGlobalsCPU *kg, IntegratorStateCPU *state)>; using IntegratorShadeFunction = CPUKernelFunction<void (*)( - const KernelGlobals *kg, IntegratorStateCPU *state, ccl_global float *render_buffer)>; - using IntegratorInitFunction = CPUKernelFunction<bool (*)(const KernelGlobals *kg, + const KernelGlobalsCPU *kg, IntegratorStateCPU *state, ccl_global float *render_buffer)>; + using IntegratorInitFunction = CPUKernelFunction<bool (*)(const KernelGlobalsCPU *kg, IntegratorStateCPU *state, KernelWorkTile *tile, ccl_global float *render_buffer)>; @@ -54,7 +54,7 @@ class CPUKernels { /* Shader evaluation. */ using ShaderEvalFunction = CPUKernelFunction<void (*)( - const KernelGlobals *kg, const KernelShaderEvalInput *, float *, const int)>; + const KernelGlobalsCPU *kg, const KernelShaderEvalInput *, float *, const int)>; ShaderEvalFunction shader_eval_displace; ShaderEvalFunction shader_eval_background; @@ -62,7 +62,7 @@ class CPUKernels { /* Adaptive stopping. */ using AdaptiveSamplingConvergenceCheckFunction = - CPUKernelFunction<bool (*)(const KernelGlobals *kg, + CPUKernelFunction<bool (*)(const KernelGlobalsCPU *kg, ccl_global float *render_buffer, int x, int y, @@ -72,7 +72,7 @@ class CPUKernels { int stride)>; using AdaptiveSamplingFilterXFunction = - CPUKernelFunction<void (*)(const KernelGlobals *kg, + CPUKernelFunction<void (*)(const KernelGlobalsCPU *kg, ccl_global float *render_buffer, int y, int start_x, @@ -81,7 +81,7 @@ class CPUKernels { int stride)>; using AdaptiveSamplingFilterYFunction = - CPUKernelFunction<void (*)(const KernelGlobals *kg, + CPUKernelFunction<void (*)(const KernelGlobalsCPU *kg, ccl_global float *render_buffer, int x, int start_y, @@ -97,13 +97,13 @@ class CPUKernels { /* Cryptomatte. */ using CryptomattePostprocessFunction = CPUKernelFunction<void (*)( - const KernelGlobals *kg, ccl_global float *render_buffer, int pixel_index)>; + const KernelGlobalsCPU *kg, ccl_global float *render_buffer, int pixel_index)>; CryptomattePostprocessFunction cryptomatte_postprocess; /* Bake. */ - CPUKernelFunction<void (*)(const KernelGlobals *, float *, int, int, int, int, int)> bake; + CPUKernelFunction<void (*)(const KernelGlobalsCPU *, float *, int, int, int, int, int)> bake; CPUKernels(); }; diff --git a/intern/cycles/device/cpu/kernel_thread_globals.cpp b/intern/cycles/device/cpu/kernel_thread_globals.cpp index 988b00cd1f0..44735beb88d 100644 --- a/intern/cycles/device/cpu/kernel_thread_globals.cpp +++ b/intern/cycles/device/cpu/kernel_thread_globals.cpp @@ -25,10 +25,10 @@ CCL_NAMESPACE_BEGIN -CPUKernelThreadGlobals::CPUKernelThreadGlobals(const KernelGlobals &kernel_globals, +CPUKernelThreadGlobals::CPUKernelThreadGlobals(const KernelGlobalsCPU &kernel_globals, void *osl_globals_memory, Profiler &cpu_profiler) - : KernelGlobals(kernel_globals), cpu_profiler_(cpu_profiler) + : KernelGlobalsCPU(kernel_globals), cpu_profiler_(cpu_profiler) { reset_runtime_memory(); @@ -40,7 +40,7 @@ CPUKernelThreadGlobals::CPUKernelThreadGlobals(const KernelGlobals &kernel_globa } CPUKernelThreadGlobals::CPUKernelThreadGlobals(CPUKernelThreadGlobals &&other) noexcept - : KernelGlobals(std::move(other)), cpu_profiler_(other.cpu_profiler_) + : KernelGlobalsCPU(std::move(other)), cpu_profiler_(other.cpu_profiler_) { other.reset_runtime_memory(); } @@ -58,7 +58,7 @@ CPUKernelThreadGlobals &CPUKernelThreadGlobals::operator=(CPUKernelThreadGlobals return *this; } - *static_cast<KernelGlobals *>(this) = *static_cast<KernelGlobals *>(&other); + *static_cast<KernelGlobalsCPU *>(this) = *static_cast<KernelGlobalsCPU *>(&other); other.reset_runtime_memory(); diff --git a/intern/cycles/device/cpu/kernel_thread_globals.h b/intern/cycles/device/cpu/kernel_thread_globals.h index d005c3bb56c..5aeeaf678d0 100644 --- a/intern/cycles/device/cpu/kernel_thread_globals.h +++ b/intern/cycles/device/cpu/kernel_thread_globals.h @@ -23,17 +23,17 @@ CCL_NAMESPACE_BEGIN class Profiler; -/* A special class which extends memory ownership of the `KernelGlobals` decoupling any resource +/* A special class which extends memory ownership of the `KernelGlobalsCPU` decoupling any resource * which is not thread-safe for access. Every worker thread which needs to operate on - * `KernelGlobals` needs to initialize its own copy of this object. + * `KernelGlobalsCPU` needs to initialize its own copy of this object. * * NOTE: Only minimal subset of objects are copied: `KernelData` is never copied. This means that * there is no unnecessary data duplication happening when using this object. */ -class CPUKernelThreadGlobals : public KernelGlobals { +class CPUKernelThreadGlobals : public KernelGlobalsCPU { public: /* TODO(sergey): Would be nice to have properly typed OSLGlobals even in the case when building * without OSL support. Will avoid need to those unnamed pointers and casts. */ - CPUKernelThreadGlobals(const KernelGlobals &kernel_globals, + CPUKernelThreadGlobals(const KernelGlobalsCPU &kernel_globals, void *osl_globals_memory, Profiler &cpu_profiler); diff --git a/intern/cycles/integrator/path_trace_work_cpu.cpp b/intern/cycles/integrator/path_trace_work_cpu.cpp index 18a5365453d..1cadcd9ec5c 100644 --- a/intern/cycles/integrator/path_trace_work_cpu.cpp +++ b/intern/cycles/integrator/path_trace_work_cpu.cpp @@ -114,7 +114,7 @@ void PathTraceWorkCPU::render_samples(RenderStatistics &statistics, statistics.occupancy = 1.0f; } -void PathTraceWorkCPU::render_samples_full_pipeline(KernelGlobals *kernel_globals, +void PathTraceWorkCPU::render_samples_full_pipeline(KernelGlobalsCPU *kernel_globals, const KernelWorkTile &work_tile, const int samples_num) { @@ -127,7 +127,7 @@ void PathTraceWorkCPU::render_samples_full_pipeline(KernelGlobals *kernel_global if (device_scene_->data.integrator.has_shadow_catcher) { shadow_catcher_state = &integrator_states[1]; - path_state_init_queues(kernel_globals, shadow_catcher_state); + path_state_init_queues(shadow_catcher_state); } KernelWorkTile sample_work_tile = work_tile; diff --git a/intern/cycles/integrator/path_trace_work_cpu.h b/intern/cycles/integrator/path_trace_work_cpu.h index d011e8d05bd..91c024f4e4a 100644 --- a/intern/cycles/integrator/path_trace_work_cpu.h +++ b/intern/cycles/integrator/path_trace_work_cpu.h @@ -28,7 +28,7 @@ CCL_NAMESPACE_BEGIN struct KernelWorkTile; -struct KernelGlobals; +struct KernelGlobalsCPU; class CPUKernels; @@ -64,7 +64,7 @@ class PathTraceWorkCPU : public PathTraceWork { protected: /* Core path tracing routine. Renders given work time on the given queue. */ - void render_samples_full_pipeline(KernelGlobals *kernel_globals, + void render_samples_full_pipeline(KernelGlobalsCPU *kernel_globals, const KernelWorkTile &work_tile, const int samples_num); diff --git a/intern/cycles/integrator/shader_eval.cpp b/intern/cycles/integrator/shader_eval.cpp index 53546c03872..cfc30056f7d 100644 --- a/intern/cycles/integrator/shader_eval.cpp +++ b/intern/cycles/integrator/shader_eval.cpp @@ -113,7 +113,7 @@ bool ShaderEval::eval_cpu(Device *device, } const int thread_index = tbb::this_task_arena::current_thread_index(); - KernelGlobals *kg = &kernel_thread_globals[thread_index]; + const KernelGlobalsCPU *kg = &kernel_thread_globals[thread_index]; switch (type) { case SHADER_EVAL_DISPLACE: diff --git a/intern/cycles/kernel/bvh/bvh.h b/intern/cycles/kernel/bvh/bvh.h index a501cbe7a4b..bdbd574bf0f 100644 --- a/intern/cycles/kernel/bvh/bvh.h +++ b/intern/cycles/kernel/bvh/bvh.h @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
