Fix incorrect FLT_MIN use
[blender.git] / intern / cycles / device / device_task.h
1 /*
2  * Copyright 2011-2013 Blender Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __DEVICE_TASK_H__
18 #define __DEVICE_TASK_H__
19
20 #include "device_memory.h"
21
22 #include "util_function.h"
23 #include "util_list.h"
24 #include "util_task.h"
25
26 CCL_NAMESPACE_BEGIN
27
28 /* Device Task */
29
30 class Device;
31 class RenderBuffers;
32 class RenderTile;
33 class Tile;
34
35 class DeviceTask : public Task {
36 public:
37         typedef enum { PATH_TRACE, FILM_CONVERT, SHADER } Type;
38         Type type;
39
40         int x, y, w, h;
41         device_ptr rgba_byte;
42         device_ptr rgba_half;
43         device_ptr buffer;
44         int sample;
45         int num_samples;
46         int offset, stride;
47
48         device_ptr shader_input;
49         device_ptr shader_output, shader_output_luma;
50         int shader_eval_type;
51         int shader_filter;
52         int shader_x, shader_w;
53
54         DeviceTask(Type type = PATH_TRACE);
55
56         int get_subtask_count(int num, int max_size = 0);
57         void split(list<DeviceTask>& tasks, int num, int max_size = 0);
58
59         void update_progress(RenderTile *rtile);
60
61         function<bool(Device *device, RenderTile&)> acquire_tile;
62         function<void(void)> update_progress_sample;
63         function<void(RenderTile&)> update_tile_sample;
64         function<void(RenderTile&)> release_tile;
65         function<bool(void)> get_cancel;
66
67         bool need_finish_queue;
68         bool integrator_branched;
69         int2 requested_tile_size;
70 protected:
71         double last_update_time;
72 };
73
74 CCL_NAMESPACE_END
75
76 #endif /* __DEVICE_TASK_H__ */
77