Commit: d37dd97e4551f9d7e9c728601d03cdd7b8706991
Author: Sergey Sharybin
Date:   Wed Jul 5 12:27:41 2017 +0200
Branches: master
https://developer.blender.org/rBd37dd97e4551f9d7e9c728601d03cdd7b8706991

Cycles: Pass string by const reference rather than by value

Some of the functions might have been inlined, but others i don't see
how that was possible (don't think virtual functions can be inlined here).

In any case, better be explicitly optimal in the code.

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

M       intern/cycles/device/device_cpu.cpp
M       intern/cycles/device/device_cuda.cpp
M       intern/cycles/device/device_split_kernel.h
M       intern/cycles/device/opencl/opencl.h
M       intern/cycles/device/opencl/opencl_split.cpp
M       intern/cycles/device/opencl/opencl_util.cpp

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

diff --git a/intern/cycles/device/device_cpu.cpp 
b/intern/cycles/device/device_cpu.cpp
index a0cdec0951b..18112437b45 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -149,7 +149,8 @@ public:
                                                    device_memory& 
use_queues_flag,
                                                    device_memory& 
work_pool_wgs);
 
-       virtual SplitKernelFunction* get_split_kernel_function(string 
kernel_name, const DeviceRequestedFeatures&);
+       virtual SplitKernelFunction* get_split_kernel_function(const string& 
kernel_name,
+                                                              const 
DeviceRequestedFeatures&);
        virtual int2 split_kernel_local_size();
        virtual int2 split_kernel_global_size(device_memory& kg, device_memory& 
data, DeviceTask *task);
        virtual uint64_t state_buffer_size(device_memory& kg, device_memory& 
data, size_t num_threads);
@@ -932,7 +933,8 @@ bool CPUSplitKernel::enqueue_split_kernel_data_init(const 
KernelDimensions& dim,
        return true;
 }
 
-SplitKernelFunction* CPUSplitKernel::get_split_kernel_function(string 
kernel_name, const DeviceRequestedFeatures&)
+SplitKernelFunction* CPUSplitKernel::get_split_kernel_function(const string& 
kernel_name,
+                                                               const 
DeviceRequestedFeatures&)
 {
        CPUSplitKernelFunction *kernel = new CPUSplitKernelFunction(device);
 
diff --git a/intern/cycles/device/device_cuda.cpp 
b/intern/cycles/device/device_cuda.cpp
index 29fa08d94b1..3a29538aa13 100644
--- a/intern/cycles/device/device_cuda.cpp
+++ b/intern/cycles/device/device_cuda.cpp
@@ -105,7 +105,8 @@ public:
                                                    device_memory& 
use_queues_flag,
                                                    device_memory& 
work_pool_wgs);
 
-       virtual SplitKernelFunction* get_split_kernel_function(string 
kernel_name, const DeviceRequestedFeatures&);
+       virtual SplitKernelFunction* get_split_kernel_function(const string& 
kernel_name,
+                                                              const 
DeviceRequestedFeatures&);
        virtual int2 split_kernel_local_size();
        virtual int2 split_kernel_global_size(device_memory& kg, device_memory& 
data, DeviceTask *task);
 };
@@ -2037,7 +2038,8 @@ bool 
CUDASplitKernel::enqueue_split_kernel_data_init(const KernelDimensions& dim
        return !device->have_error();
 }
 
-SplitKernelFunction* CUDASplitKernel::get_split_kernel_function(string 
kernel_name, const DeviceRequestedFeatures&)
+SplitKernelFunction* CUDASplitKernel::get_split_kernel_function(const string& 
kernel_name,
+                                                                const 
DeviceRequestedFeatures&)
 {
        CUfunction func;
 
diff --git a/intern/cycles/device/device_split_kernel.h 
b/intern/cycles/device/device_split_kernel.h
index 2bac1998cb7..9c42cb58520 100644
--- a/intern/cycles/device/device_split_kernel.h
+++ b/intern/cycles/device/device_split_kernel.h
@@ -125,7 +125,8 @@ public:
                                                    device_memory& 
use_queues_flag,
                                                    device_memory& 
work_pool_wgs) = 0;
 
-       virtual SplitKernelFunction* get_split_kernel_function(string 
kernel_name, const DeviceRequestedFeatures&) = 0;
+       virtual SplitKernelFunction* get_split_kernel_function(const string& 
kernel_name,
+                                                              const 
DeviceRequestedFeatures&) = 0;
        virtual int2 split_kernel_local_size() = 0;
        virtual int2 split_kernel_global_size(device_memory& kg, device_memory& 
data, DeviceTask *task) = 0;
 };
diff --git a/intern/cycles/device/opencl/opencl.h 
b/intern/cycles/device/opencl/opencl.h
index 399fae9b42e..7da690904aa 100644
--- a/intern/cycles/device/opencl/opencl.h
+++ b/intern/cycles/device/opencl/opencl.h
@@ -84,7 +84,7 @@ public:
                                           string *error = NULL);
        static bool device_version_check(cl_device_id device,
                                         string *error = NULL);
-       static string get_hardware_id(string platform_name,
+       static string get_hardware_id(const string& platform_name,
                                      cl_device_id device_id);
        static void get_usable_devices(vector<OpenCLPlatformDevice> 
*usable_devices,
                                       bool force_all = false);
@@ -247,17 +247,17 @@ public:
        public:
                OpenCLProgram() : loaded(false), device(NULL) {}
                OpenCLProgram(OpenCLDeviceBase *device,
-                             string program_name,
-                             string kernel_name,
-                             string kernel_build_options,
+                             const string& program_name,
+                             const string& kernel_name,
+                             const string& kernel_build_options,
                              bool use_stdout = true);
                ~OpenCLProgram();
 
                void add_kernel(ustring name);
                void load();
 
-               bool is_loaded()    { return loaded; }
-               string get_log()    { return log; }
+               bool is_loaded() const { return loaded; }
+               const string& get_log() const { return log; }
                void report_error();
 
                cl_kernel operator()();
@@ -271,8 +271,8 @@ public:
                bool load_binary(const string& clbin, const string *debug_src = 
NULL);
                bool save_binary(const string& clbin);
 
-               void add_log(string msg, bool is_debug);
-               void add_error(string msg);
+               void add_log(const string& msg, bool is_debug);
+               void add_error(const string& msg);
 
                bool loaded;
                cl_program program;
diff --git a/intern/cycles/device/opencl/opencl_split.cpp 
b/intern/cycles/device/opencl/opencl_split.cpp
index 08b632ee9d3..73b8769d3cc 100644
--- a/intern/cycles/device/opencl/opencl_split.cpp
+++ b/intern/cycles/device/opencl/opencl_split.cpp
@@ -263,7 +263,7 @@ public:
        explicit OpenCLSplitKernel(OpenCLDeviceSplitKernel *device) : 
DeviceSplitKernel(device), device(device) {
        }
 
-       virtual SplitKernelFunction* get_split_kernel_function(string 
kernel_name,
+       virtual SplitKernelFunction* get_split_kernel_function(const string& 
kernel_name,
                                                               const 
DeviceRequestedFeatures& requested_features)
        {
                OpenCLSplitKernelFunction* kernel = new 
OpenCLSplitKernelFunction(device, cached_memory);
diff --git a/intern/cycles/device/opencl/opencl_util.cpp 
b/intern/cycles/device/opencl/opencl_util.cpp
index 8ba2a8e26da..0d34af3e040 100644
--- a/intern/cycles/device/opencl/opencl_util.cpp
+++ b/intern/cycles/device/opencl/opencl_util.cpp
@@ -241,9 +241,9 @@ string OpenCLCache::get_kernel_md5()
 }
 
 OpenCLDeviceBase::OpenCLProgram::OpenCLProgram(OpenCLDeviceBase *device,
-                                               string program_name,
-                                               string kernel_file,
-                                               string kernel_build_options,
+                                               const string& program_name,
+                                               const string& kernel_file,
+                                               const string& 
kernel_build_options,
                                                bool use_stdout)
  : device(device),
    program_name(program_name),
@@ -274,7 +274,7 @@ void OpenCLDeviceBase::OpenCLProgram::release()
        }
 }
 
-void OpenCLDeviceBase::OpenCLProgram::add_log(string msg, bool debug)
+void OpenCLDeviceBase::OpenCLProgram::add_log(const string& msg, bool debug)
 {
        if(!use_stdout) {
                log += msg + "\n";
@@ -288,7 +288,7 @@ void OpenCLDeviceBase::OpenCLProgram::add_log(string msg, 
bool debug)
        }
 }
 
-void OpenCLDeviceBase::OpenCLProgram::add_error(string msg)
+void OpenCLDeviceBase::OpenCLProgram::add_error(const string& msg)
 {
        if(use_stdout) {
                fprintf(stderr, "%s\n", msg.c_str());
@@ -707,7 +707,7 @@ bool OpenCLInfo::device_version_check(cl_device_id device,
        return true;
 }
 
-string OpenCLInfo::get_hardware_id(string platform_name, cl_device_id 
device_id)
+string OpenCLInfo::get_hardware_id(const string& platform_name, cl_device_id 
device_id)
 {
        if(platform_name == "AMD Accelerated Parallel Processing" || 
platform_name == "Apple") {
                /* Use cl_amd_device_topology extension. */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to