[Bf-blender-cvs] [9acc795] soc-2016-cycles_denoising: Cycles: Declare more utility function arguments const

Lukas Stockner noreply at git.blender.org
Tue Dec 20 16:06:53 CET 2016


Commit: 9acc7952e1a92bbbc5ebd177b673d73d1f2083eb
Author: Lukas Stockner
Date:   Thu Dec 8 19:01:23 2016 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rB9acc7952e1a92bbbc5ebd177b673d73d1f2083eb

Cycles: Declare more utility function arguments const

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

M	intern/cycles/kernel/filter/filter_features.h
M	intern/cycles/kernel/filter/filter_features_sse.h
M	intern/cycles/util/util_math_matrix.h

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

diff --git a/intern/cycles/kernel/filter/filter_features.h b/intern/cycles/kernel/filter/filter_features.h
index 8e35539..f43dbad 100644
--- a/intern/cycles/kernel/filter/filter_features.h
+++ b/intern/cycles/kernel/filter/filter_features.h
@@ -43,7 +43,7 @@
                              }
 #endif
 
-ccl_device_inline void filter_get_features(int3 pixel, float ccl_readonly_ptr buffer, float *features, float *mean, int pass_stride)
+ccl_device_inline void filter_get_features(int3 pixel, float ccl_readonly_ptr buffer, float *features, float ccl_readonly_ptr mean, int pass_stride)
 {
 	float *feature = features;
 	*(feature++) = pixel.x;
@@ -70,7 +70,7 @@ ccl_device_inline void filter_get_features(int3 pixel, float ccl_readonly_ptr bu
 #endif
 }
 
-ccl_device_inline void filter_get_feature_variance(float ccl_readonly_ptr buffer, float *features, float *scale, int pass_stride)
+ccl_device_inline void filter_get_feature_variance(float ccl_readonly_ptr buffer, float *features, float ccl_readonly_ptr scale, int pass_stride)
 {
 	float *feature = features;
 	*(feature++) = 0.0f;
@@ -95,7 +95,7 @@ ccl_device_inline void filter_get_feature_variance(float ccl_readonly_ptr buffer
 		features[i] *= scale[i]*scale[i];
 }
 
-ccl_device_inline void filter_get_feature_scales(int3 pixel, float ccl_readonly_ptr buffer, float *scales, float *mean, int pass_stride)
+ccl_device_inline void filter_get_feature_scales(int3 pixel, float ccl_readonly_ptr buffer, float *scales, float ccl_readonly_ptr mean, int pass_stride)
 {
 	*(scales++) = fabsf(pixel.x - *(mean++)); //X
 	*(scales++) = fabsf(pixel.y - *(mean++)); //Y
@@ -167,7 +167,7 @@ ccl_device_inline bool filter_firefly_rejection(float3 pixel_color, float pixel_
 
 /* Fill design row and compute WLR weight.
  * Doing both at the same time allows for a nice early-out as soon as the weight is zero. */
-ccl_device_inline float filter_get_design_row_transform_weight(int3 pixel, float ccl_readonly_ptr buffer, float *feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride, float *bandwidth_factor)
+ccl_device_inline float filter_get_design_row_transform_weight(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride, float ccl_readonly_ptr bandwidth_factor)
 {
 	filter_get_features(pixel, buffer, features, feature_means, pass_stride);
 	design_row[0] = 1.0f;
@@ -203,7 +203,7 @@ ccl_device_inline void filter_extend_design_row_quadratic(int rank, float *desig
 }
 
 /* Fill the design row without computing the weight. */
-ccl_device_inline void filter_get_design_row_transform(int3 pixel, float ccl_readonly_ptr buffer, float *feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride)
+ccl_device_inline void filter_get_design_row_transform(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride)
 {
 	filter_get_features(pixel, buffer, features, feature_means, pass_stride);
 	design_row[0] = 1.0f;
@@ -217,7 +217,7 @@ ccl_device_inline void filter_get_design_row_transform(int3 pixel, float ccl_rea
 	}
 }
 
-ccl_device_inline void filter_get_design_row(int3 pixel, float ccl_readonly_ptr buffer, float *feature_means, float *feature_scales, int pass_stride, float *design_row)
+ccl_device_inline void filter_get_design_row(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, float ccl_readonly_ptr feature_scales, int pass_stride, float *design_row)
 {
 	design_row[0] = 1.0f;
 	filter_get_features(pixel, buffer, design_row+1, feature_means, pass_stride);
diff --git a/intern/cycles/kernel/filter/filter_features_sse.h b/intern/cycles/kernel/filter/filter_features_sse.h
index 72d8ae7..5d57093 100644
--- a/intern/cycles/kernel/filter/filter_features_sse.h
+++ b/intern/cycles/kernel/filter/filter_features_sse.h
@@ -50,7 +50,7 @@ CCL_NAMESPACE_BEGIN
                                  }
 #endif
 
-ccl_device_inline void filter_get_features_sse(__m128 x, __m128 y, __m128 t, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *features, __m128 *mean, int pass_stride)
+ccl_device_inline void filter_get_features_sse(__m128 x, __m128 y, __m128 t, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *features, __m128 ccl_readonly_ptr mean, int pass_stride)
 {
 	__m128 *feature = features;
 	*(feature++) = x;
@@ -81,7 +81,7 @@ ccl_device_inline void filter_get_features_sse(__m128 x, __m128 y, __m128 t, __m
 #endif
 }
 
-ccl_device_inline void filter_get_feature_scales_sse(__m128 x, __m128 y, __m128 t, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *scales, __m128 *mean, int pass_stride)
+ccl_device_inline void filter_get_feature_scales_sse(__m128 x, __m128 y, __m128 t, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *scales, __m128 ccl_readonly_ptr mean, int pass_stride)
 {
 	*(scales++) = _mm_mask_ps(_mm_fabs_ps(_mm_sub_ps(x, *(mean++))), active_pixels); //X
 	*(scales++) = _mm_mask_ps(_mm_fabs_ps(_mm_sub_ps(y, *(mean++))), active_pixels); //Y
@@ -139,7 +139,7 @@ ccl_device_inline void filter_calculate_scale_sse(__m128 *scale)
 	scale[7] = _mm_rcp_ps(_mm_max_ps(_mm_hmax_ps(_mm_sqrt_ps(scale[7])), _mm_set1_ps(0.01f))); //AlbedoB
 }
 
-ccl_device_inline void filter_get_feature_variance_sse(__m128 x, __m128 y, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *features, __m128 *scale, int pass_stride)
+ccl_device_inline void filter_get_feature_variance_sse(__m128 x, __m128 y, __m128 active_pixels, float ccl_readonly_ptr buffer, __m128 *features, __m128 ccl_readonly_ptr scale, int pass_stride)
 {
 	__m128 *feature = features;
 	*(feature++) = _mm_setzero_ps();
@@ -183,7 +183,7 @@ ccl_device_inline __m128 filter_get_pixel_variance_sse(float ccl_readonly_ptr bu
 	return _mm_mask_ps(_mm_mul_ps(_mm_set1_ps(1.0f/3.0f), _mm_add_ps(_mm_add_ps(ccl_get_feature_sse(17), ccl_get_feature_sse(19)), ccl_get_feature_sse(21))), active_pixels);
 }
 
-ccl_device_inline __m128 filter_fill_design_row_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 *feature_transform, __m128 *bandwidth_factor)
+ccl_device_inline __m128 filter_fill_design_row_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 ccl_readonly_ptr feature_transform, __m128 ccl_readonly_ptr bandwidth_factor)
 {
 	__m128 weight = _mm_mask_ps(_mm_set1_ps(1.0f), active_pixels);
 	design_row[0] = weight;
@@ -197,7 +197,7 @@ ccl_device_inline __m128 filter_fill_design_row_sse(__m128 *features, __m128 act
 	return weight;
 }
 
-ccl_device_inline __m128 filter_fill_design_row_quadratic_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 *feature_transform)
+ccl_device_inline __m128 filter_fill_design_row_quadratic_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 ccl_readonly_ptr feature_transform)
 {
 	__m128 weight = _mm_mask_ps(_mm_set1_ps(1.0f), active_pixels);
 	design_row[0] = weight;
@@ -211,7 +211,7 @@ ccl_device_inline __m128 filter_fill_design_row_quadratic_sse(__m128 *features,
 	return weight;
 }
 
-ccl_device_inline __m128 filter_firefly_rejection_sse(__m128 *pixel_color, __m128 pixel_variance, __m128 *center_color, __m128 sqrt_center_variance)
+ccl_device_inline __m128 filter_firefly_rejection_sse(__m128 ccl_readonly_ptr pixel_color, __m128 pixel_variance, __m128 ccl_readonly_ptr center_color, __m128 sqrt_center_variance)
 {
 	__m128 color_diff = _mm_mul_ps(_mm_set1_ps(1.0f/9.0f), _mm_add_ps(_mm_add_ps(_mm_fabs_ps(_mm_sub_ps(pixel_color[0], center_color[0])), _mm_fabs_ps(_mm_sub_ps(pixel_color[1], center_color[1]))), _mm_fabs_ps(_mm_sub_ps(pixel_color[2], center_color[2]))));
 	__m128 variance = _mm_add_ps(_mm_add_ps(sqrt_center_variance, _mm_sqrt_ps(pixel_variance)), _mm_set1_ps(0.005f));
diff --git a/intern/cycles/util/util_math_matrix.h b/intern/cycles/util/util_math_matrix.h
index f8e7a94..4ea0ca3 100644
--- a/intern/cycles/util/util_math_matrix.h
+++ b/intern/cycles/util/util_math_matrix.h
@@ -498,20 +498,20 @@ ccl_device_inline void math_matrix_zero_lower_sse(__m128 *A, int n)
 /* Add Gramian matrix of v to A.
  * The Gramian matrix of v is v^T*v, so element (i,j) is v[i]*v[j].
  * Obviously, the resulting matrix is symmetric, so only the lower triangluar part is stored. */
-ccl_device_inline void math_add_gramian_sse(__m128 *A, int n, __m128 *v, __m128 weight)
+ccl_device_inline void math_add_gramian_sse(__m128 *A, int n, __m128 ccl_readonly_ptr v, __m128 weight)
 {
 	for(int row = 0; row < n; row++)
 		for(int col = 0; col <= row; col++)
 			MAT(A, n, row, col) = _mm_add_ps(MAT(A, n, row, col), _mm_mul_ps(_mm_mul_ps(v[row], v[col]), weight));
 }
 
-ccl_device_inline void math_add_vector_sse(__m128 *V, int n, __m128 *a)
+ccl_device_inline void math_add_vector_sse(__m128 *V, int n, __m128 ccl_readonly_ptr a)
 {
 	for(int i = 0; i < n; i++)
 		V[i] = _mm_add_ps(V[i], a[i]);
 }
 
-ccl_device_inline void math_mul_vector_sse(__m128 *V, int n, __m128 *a)
+ccl_device_inline void math_mul_vector_sse(__m128 *V, int n, __m128 ccl_readonly_ptr a)
 {
 	for(int i = 0; i < n; i++)
 		V[i] = _mm_mul_ps(V[i], a[i]);
@@ -529,7 +529,7 @@ ccl_device_inline void math_mask_vector_sse(__m128 *V, int n, __m128 mask)
 		V[i] = _mm_mask_ps(V[i], mask);
 }
 
-ccl_device_inline __m128 math_dot_sse(__m128 *a, __m128 *b, int n)
+ccl_device_inline __m128 math_dot_sse(__m128 ccl_readonly_ptr a, __m128 ccl_readonly_ptr b, int n)
 {
 	__m128 d = _mm_setzero_ps();
 	for(int i = 0; i < n; i++)
@@ -537,12 +537,12 @@ ccl_device_inline __m128 math_dot_sse(__m128 *a, __m128 *b, int n)
 	return d;
 }
 
-ccl_device_inline float3 math_sum_float3(__m128 *a)
+ccl_device_inline float3 math_sum_float3(__m128 ccl_readonly_ptr a)
 {
 	return make_float3(_mm_hsum_ss(a[0]), _mm_hsum_ss(a[1]), _mm_hsum_ss(a[2]));
 }
 
-ccl_device_inline void math_hsum_matrix_lower(float *A, int n, __m128 *B)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list