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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-01-09 20:58:01 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-01-09 20:58:01 +0400
commitd7932ceea82a3c2277a179c00ca72ecb3cfb97cb (patch)
tree933570102e52c7562b87534e87c0c38bb5eb47ec /intern/cycles/blender/addon
parent47d9c6689be0448b898d18a1e810d2150867938b (diff)
Cycles: multi GPU rendering support.
The rendering device is now set in User Preferences > System, where you can choose between OpenCL/CUDA and devices. Per scene you can then still choose to use CPU or GPU rendering. Load balancing still needs to be improved, now it just splits the entire render in two, that will be done in a separate commit.
Diffstat (limited to 'intern/cycles/blender/addon')
-rw-r--r--intern/cycles/blender/addon/engine.py3
-rw-r--r--intern/cycles/blender/addon/enums.py24
-rw-r--r--intern/cycles/blender/addon/properties.py3
-rw-r--r--intern/cycles/blender/addon/ui.py16
4 files changed, 8 insertions, 38 deletions
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index 3d71c25d7ad..05b1f883594 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -35,6 +35,7 @@ def create(engine, data, scene, region=0, v3d=0, rv3d=0):
import _cycles
data = data.as_pointer()
+ userpref = bpy.context.user_preferences.as_pointer()
scene = scene.as_pointer()
if region:
region = region.as_pointer()
@@ -43,7 +44,7 @@ def create(engine, data, scene, region=0, v3d=0, rv3d=0):
if rv3d:
rv3d = rv3d.as_pointer()
- engine.session = _cycles.create(engine.as_pointer(), data, scene, region, v3d, rv3d)
+ engine.session = _cycles.create(engine.as_pointer(), userpref, data, scene, region, v3d, rv3d)
def free(engine):
diff --git a/intern/cycles/blender/addon/enums.py b/intern/cycles/blender/addon/enums.py
index a11f5ca0f87..da4c73a5d3b 100644
--- a/intern/cycles/blender/addon/enums.py
+++ b/intern/cycles/blender/addon/enums.py
@@ -20,29 +20,9 @@
from . import engine
-
-def get_gpu_device():
- available_devices = engine.available_devices()
- cuda = 'cuda' in available_devices
- opencl = 'opencl' in available_devices
- if cuda and opencl:
- gpu_string = "GPU"
- elif cuda and not opencl:
- gpu_string = "CUDA GPU"
- else:
- gpu_string = "OpenCL GPU"
-
- return gpu_string
-
devices = (
- ("CPU", "CPU", "Processor"),
- ("GPU", get_gpu_device(), "Graphics card"),
- )
-
-gpu_type = (
- ("CUDA", "CUDA", "NVidia only"),
- ("OPENCL", "OpenCL", ""),
- )
+ ("CPU", "CPU", "Use CPU for rendering"),
+ ("GPU", "GPU Compute", "Use GPU compute device for rendering, configured in user preferences"))
feature_set = (
("SUPPORTED", "Supported", "Only use finished and supported features"),
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 0ea7396f9c2..0b096c529b8 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -38,9 +38,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
cls.device = EnumProperty(name="Device", description="Device to use for rendering",
items=enums.devices, default="CPU")
- cls.gpu_type = EnumProperty(name="GPU Type", description="Processing system to use on the GPU",
- items=enums.gpu_type, default="CUDA")
-
cls.feature_set = EnumProperty(name="Feature Set", description="Feature set to use for rendering",
items=enums.feature_set, default="SUPPORTED")
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 6e73795666e..ea23e2b56a5 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -148,7 +148,6 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel):
sub.prop(cscene, "debug_bvh_type", text="")
sub.prop(cscene, "debug_use_spatial_splits")
-
class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
bl_label = "Layers"
bl_options = {'DEFAULT_CLOSED'}
@@ -712,19 +711,12 @@ def draw_device(self, context):
cscene = scene.cycles
layout.prop(cscene, "feature_set")
- experimental = cscene.feature_set == 'EXPERIMENTAL'
-
- available_devices = engine.available_devices()
- available_cuda = 'cuda' in available_devices
- available_opencl = experimental and 'opencl' in available_devices
- if available_cuda or available_opencl:
+ device_type = context.user_preferences.system.compute_device_type
+ if device_type == 'CUDA':
+ layout.prop(cscene, "device")
+ elif device_type == 'OPENCL' and cscene.feature_set == 'EXPERIMENTAL':
layout.prop(cscene, "device")
- if cscene.device == 'GPU' and available_cuda and available_opencl:
- layout.prop(cscene, "gpu_type")
- if experimental and cscene.device == 'CPU' and engine.with_osl():
- layout.prop(cscene, "shading_system")
-
def draw_pause(self, context):
layout = self.layout