forked from bartvdbraak/blender
Cycles: fix broken kernel compile after recent change, some tweaks
to UI to only show options when available, fix linux lib detection.
This commit is contained in:
parent
27102bfec4
commit
8ddef5163f
@ -22,7 +22,7 @@ devices = (
|
|||||||
|
|
||||||
gpu_type = (
|
gpu_type = (
|
||||||
("CUDA", "CUDA", "NVidia only"),
|
("CUDA", "CUDA", "NVidia only"),
|
||||||
("OPENCL", "OpenCL", ""))
|
("OPENCL", "OpenCL (incomplete)", ""))
|
||||||
|
|
||||||
shading_systems = (
|
shading_systems = (
|
||||||
("GPU_COMPATIBLE", "GPU Compatible", "Restricted shading system compatible with GPU rendering"),
|
("GPU_COMPATIBLE", "GPU Compatible", "Restricted shading system compatible with GPU rendering"),
|
||||||
|
@ -522,10 +522,14 @@ def draw_device(self, context):
|
|||||||
if scene.render.engine == "CYCLES":
|
if scene.render.engine == "CYCLES":
|
||||||
cscene = scene.cycles
|
cscene = scene.cycles
|
||||||
|
|
||||||
if ('cuda' or 'opencl') in engine.available_devices():
|
available_devices = engine.available_devices()
|
||||||
|
available_cuda = 'cuda' in available_devices
|
||||||
|
available_opencl = 'opencl' in available_devices
|
||||||
|
|
||||||
|
if available_cuda or available_opencl:
|
||||||
layout.prop(cscene, "device")
|
layout.prop(cscene, "device")
|
||||||
if cscene.device == 'GPU':
|
if cscene.device == 'GPU' and available_cuda and available_opencl:
|
||||||
layout.prop(cscene, "gpu_type", expand=True)
|
layout.prop(cscene, "gpu_type")
|
||||||
if cscene.device == 'CPU' and engine.with_osl():
|
if cscene.device == 'CPU' and engine.with_osl():
|
||||||
layout.prop(cscene, "shading_system")
|
layout.prop(cscene, "shading_system")
|
||||||
|
|
||||||
|
@ -199,24 +199,34 @@ bool BlenderSync::get_session_pause(BL::Scene b_scene, bool background)
|
|||||||
return (background)? false: get_boolean(cscene, "preview_pause");
|
return (background)? false: get_boolean(cscene, "preview_pause");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool device_type_available(vector<DeviceType>& types, DeviceType dtype)
|
||||||
|
{
|
||||||
|
foreach(DeviceType dt, types)
|
||||||
|
if(dt == dtype)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
SessionParams BlenderSync::get_session_params(BL::Scene b_scene, bool background)
|
SessionParams BlenderSync::get_session_params(BL::Scene b_scene, bool background)
|
||||||
{
|
{
|
||||||
SessionParams params;
|
SessionParams params;
|
||||||
DeviceType dtype;
|
|
||||||
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
|
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
|
||||||
|
|
||||||
/* device type */
|
/* device type */
|
||||||
if ((RNA_enum_get(&cscene, "device")) == 0)
|
|
||||||
dtype = DEVICE_CPU;
|
|
||||||
else
|
|
||||||
dtype = ((RNA_enum_get(&cscene, "gpu_type")) == 0)? DEVICE_CUDA: DEVICE_OPENCL;
|
|
||||||
|
|
||||||
params.device_type = DEVICE_CPU;
|
params.device_type = DEVICE_CPU;
|
||||||
vector<DeviceType> types = Device::available_types();
|
|
||||||
|
|
||||||
foreach(DeviceType dt, types)
|
if(RNA_enum_get(&cscene, "device") != 0) {
|
||||||
if(dt == dtype)
|
vector<DeviceType> types = Device::available_types();
|
||||||
|
DeviceType dtype = (RNA_enum_get(&cscene, "gpu_type") == 0)? DEVICE_CUDA: DEVICE_OPENCL;
|
||||||
|
|
||||||
|
if(device_type_available(types, dtype))
|
||||||
params.device_type = dtype;
|
params.device_type = dtype;
|
||||||
|
else if(device_type_available(types, DEVICE_OPENCL))
|
||||||
|
params.device_type = DEVICE_OPENCL;
|
||||||
|
else if(device_type_available(types, DEVICE_CUDA))
|
||||||
|
params.device_type = DEVICE_CUDA;
|
||||||
|
}
|
||||||
|
|
||||||
/* Background */
|
/* Background */
|
||||||
params.background = background;
|
params.background = background;
|
||||||
|
@ -357,8 +357,8 @@ __device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd)
|
|||||||
if(sd->svm_closure == CLOSURE_HOLDOUT_ID)
|
if(sd->svm_closure == CLOSURE_HOLDOUT_ID)
|
||||||
return make_float3(1.0f, 1.0f, 1.0f);
|
return make_float3(1.0f, 1.0f, 1.0f);
|
||||||
else
|
else
|
||||||
return make_float3(0.0f, 0.0f, 0.0f);
|
|
||||||
#endif
|
#endif
|
||||||
|
return make_float3(0.0f, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ int clLibraryInit()
|
|||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
const char *path = "/Library/Frameworks/OpenCL.framework/OpenCL";
|
const char *path = "/Library/Frameworks/OpenCL.framework/OpenCL";
|
||||||
#else
|
#else
|
||||||
const char *path = "libopencl.so";
|
const char *path = "libOpenCL.so";
|
||||||
#endif
|
#endif
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user