[Bf-blender-cvs] [1df3b519888] master: Cycles: replace integrator state argument macros
Brecht Van Lommel
noreply at git.blender.org
Mon Oct 18 19:03:53 CEST 2021
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. @@
More information about the Bf-blender-cvs
mailing list