Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/device/opencl/opencl_mega.cpp')
-rw-r--r--intern/cycles/device/opencl/opencl_mega.cpp186
1 files changed, 0 insertions, 186 deletions
diff --git a/intern/cycles/device/opencl/opencl_mega.cpp b/intern/cycles/device/opencl/opencl_mega.cpp
deleted file mode 100644
index c0b9e81d4d3..00000000000
--- a/intern/cycles/device/opencl/opencl_mega.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef WITH_OPENCL
-
-#include "device/opencl/opencl.h"
-
-#include "render/buffers.h"
-
-#include "kernel/kernel_types.h"
-
-#include "util/util_md5.h"
-#include "util/util_path.h"
-#include "util/util_time.h"
-
-CCL_NAMESPACE_BEGIN
-
-class OpenCLDeviceMegaKernel : public OpenCLDeviceBase
-{
-public:
- OpenCLProgram path_trace_program;
-
- OpenCLDeviceMegaKernel(DeviceInfo& info, Stats &stats, Profiler &profiler, bool background_)
- : OpenCLDeviceBase(info, stats, profiler, background_),
- path_trace_program(this,
- get_opencl_program_name(false, "megakernel"),
- get_opencl_program_filename(false, "megakernel"),
- "-D__COMPILE_ONLY_MEGAKERNEL__ ")
- {
- }
-
-
- virtual bool show_samples() const
- {
- return true;
- }
-
- virtual BVHLayoutMask get_bvh_layout_mask() const
- {
- return BVH_LAYOUT_BVH2;
- }
-
- const string get_opencl_program_name(bool /*single_program*/, const string& kernel_name)
- {
- return kernel_name;
- }
-
- const string get_opencl_program_filename(bool /*single_program*/, const string& /*kernel_name*/)
- {
- return "kernel.cl";
- }
-
- virtual bool add_kernel_programs(const DeviceRequestedFeatures& /*requested_features*/,
- vector<OpenCLProgram*> &programs)
- {
- path_trace_program.add_kernel(ustring("path_trace"));
- programs.push_back(&path_trace_program);
- return true;
- }
-
- ~OpenCLDeviceMegaKernel()
- {
- task_pool.stop();
- path_trace_program.release();
- }
-
- void path_trace(RenderTile& rtile, int sample)
- {
- scoped_timer timer(&rtile.buffers->render_time);
-
- /* Cast arguments to cl types. */
- cl_mem d_data = CL_MEM_PTR(const_mem_map["__data"]->device_pointer);
- cl_mem d_buffer = CL_MEM_PTR(rtile.buffer);
- cl_int d_x = rtile.x;
- cl_int d_y = rtile.y;
- cl_int d_w = rtile.w;
- cl_int d_h = rtile.h;
- cl_int d_offset = rtile.offset;
- cl_int d_stride = rtile.stride;
-
- /* Sample arguments. */
- cl_int d_sample = sample;
-
- cl_kernel ckPathTraceKernel = path_trace_program(ustring("path_trace"));
-
- cl_uint start_arg_index =
- kernel_set_args(ckPathTraceKernel,
- 0,
- d_data,
- d_buffer);
-
- set_kernel_arg_buffers(ckPathTraceKernel, &start_arg_index);
-
- start_arg_index += kernel_set_args(ckPathTraceKernel,
- start_arg_index,
- d_sample,
- d_x,
- d_y,
- d_w,
- d_h,
- d_offset,
- d_stride);
-
- enqueue_kernel(ckPathTraceKernel, d_w, d_h);
- }
-
- void thread_run(DeviceTask *task)
- {
- if(task->type == DeviceTask::FILM_CONVERT) {
- film_convert(*task, task->buffer, task->rgba_byte, task->rgba_half);
- }
- else if(task->type == DeviceTask::SHADER) {
- shader(*task);
- }
- else if(task->type == DeviceTask::RENDER) {
- RenderTile tile;
- DenoisingTask denoising(this, *task);
-
- /* Keep rendering tiles until done. */
- while(task->acquire_tile(this, tile)) {
- if(tile.task == RenderTile::PATH_TRACE) {
- int start_sample = tile.start_sample;
- int end_sample = tile.start_sample + tile.num_samples;
-
- for(int sample = start_sample; sample < end_sample; sample++) {
- if(task->get_cancel()) {
- if(task->need_finish_queue == false)
- break;
- }
-
- path_trace(tile, sample);
-
- tile.sample = sample + 1;
-
- task->update_progress(&tile, tile.w*tile.h);
- }
-
- /* Complete kernel execution before release tile */
- /* This helps in multi-device render;
- * The device that reaches the critical-section function
- * release_tile waits (stalling other devices from entering
- * release_tile) for all kernels to complete. If device1 (a
- * slow-render device) reaches release_tile first then it would
- * stall device2 (a fast-render device) from proceeding to render
- * next tile.
- */
- clFinish(cqCommandQueue);
- }
- else if(tile.task == RenderTile::DENOISE) {
- tile.sample = tile.start_sample + tile.num_samples;
- denoise(tile, denoising);
- task->update_progress(&tile, tile.w*tile.h);
- }
-
- task->release_tile(tile);
- }
- }
- }
-
- bool is_split_kernel()
- {
- return false;
- }
-};
-
-Device *opencl_create_mega_device(DeviceInfo& info, Stats& stats, Profiler &profiler, bool background)
-{
- return new OpenCLDeviceMegaKernel(info, stats, profiler, background);
-}
-
-CCL_NAMESPACE_END
-
-#endif