Commit: 4cf3efaa43b17d564ca3dd956b905e06f092a707 Author: Brecht Van Lommel Date: Tue Jul 13 16:15:16 2021 +0200 Branches: cycles-x https://developer.blender.org/rB4cf3efaa43b17d564ca3dd956b905e06f092a707
Cleanup: remove disabled OpenCL implementation To be replaced with something else for non-NVIDIA devices later. Makes it easier to do some of the upcoming changes. Differential Revision: https://developer.blender.org/D11912 =================================================================== M CMakeLists.txt M intern/cycles/CMakeLists.txt M intern/cycles/blender/CMakeLists.txt M intern/cycles/blender/addon/engine.py M intern/cycles/blender/addon/properties.py M intern/cycles/blender/addon/ui.py M intern/cycles/blender/blender_device.cpp M intern/cycles/blender/blender_python.cpp M intern/cycles/device/CMakeLists.txt M intern/cycles/device/device.cpp M intern/cycles/device/device.h D intern/cycles/device/opencl/device.cpp D intern/cycles/device/opencl/device.h D intern/cycles/device/opencl/device_impl.cpp D intern/cycles/device/opencl/device_impl.h D intern/cycles/device/opencl/memory_manager.cpp D intern/cycles/device/opencl/memory_manager.h D intern/cycles/device/opencl/util.cpp M intern/cycles/integrator/path_trace.cpp M intern/cycles/kernel/CMakeLists.txt M intern/cycles/kernel/device/cpu/compat.h M intern/cycles/kernel/device/cuda/compat.h D intern/cycles/kernel/device/opencl/compat.h D intern/cycles/kernel/device/opencl/globals.h D intern/cycles/kernel/device/opencl/image.h D intern/cycles/kernel/device/opencl/kernel_adaptive_adjust_samples.cl D intern/cycles/kernel/device/opencl/kernel_adaptive_filter_x.cl D intern/cycles/kernel/device/opencl/kernel_adaptive_filter_y.cl D intern/cycles/kernel/device/opencl/kernel_adaptive_stopping.cl D intern/cycles/kernel/device/opencl/kernel_bake.cl D intern/cycles/kernel/device/opencl/kernel_base.cl D intern/cycles/kernel/device/opencl/kernel_displace.cl M intern/cycles/kernel/device/optix/compat.h M intern/cycles/kernel/geom/geom_object.h M intern/cycles/kernel/kernel_random.h M intern/cycles/kernel/kernel_subsurface.h M intern/cycles/kernel/kernel_types.h M intern/cycles/kernel/kernel_work_stealing.h M intern/cycles/kernel/kernel_write_passes.h M intern/cycles/kernel/svm/svm.h M intern/cycles/kernel/svm/svm_types.h M intern/cycles/kernel/svm/svm_wireframe.h M intern/cycles/render/graph.h M intern/cycles/render/nodes.cpp M intern/cycles/render/nodes.h M intern/cycles/render/session.cpp M intern/cycles/render/shader.cpp M intern/cycles/util/util_atomic.h M intern/cycles/util/util_debug.cpp M intern/cycles/util/util_debug.h M intern/cycles/util/util_half.h M intern/cycles/util/util_math.h M intern/cycles/util/util_math_float2.h M intern/cycles/util/util_math_float3.h M intern/cycles/util/util_math_float4.h M intern/cycles/util/util_math_int2.h M intern/cycles/util/util_math_int3.h M intern/cycles/util/util_path.cpp M intern/cycles/util/util_path.h M intern/cycles/util/util_static_assert.h M intern/cycles/util/util_texture.h M intern/cycles/util/util_transform.h M intern/cycles/util/util_types.h =================================================================== diff --git a/CMakeLists.txt b/CMakeLists.txt index a051c3dc15f..14e9e08f13b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -399,7 +399,7 @@ option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF) option(WITH_CYCLES_CUBIN_COMPILER "Build cubins with nvrtc based compiler instead of nvcc" OFF) option(WITH_CYCLES_CUDA_BUILD_SERIAL "Build cubins one after another (useful on machines with limited RAM)" OFF) mark_as_advanced(WITH_CYCLES_CUDA_BUILD_SERIAL) -set(CYCLES_TEST_DEVICES CPU CACHE STRING "Run regression tests on the specified device types (CPU CUDA OPTIX OPENCL)" ) +set(CYCLES_TEST_DEVICES CPU CACHE STRING "Run regression tests on the specified device types (CPU CUDA OPTIX)" ) set(CYCLES_CUDA_BINARIES_ARCH sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 sm_70 sm_75 sm_86 compute_75 CACHE STRING "CUDA architectures to build binaries for") mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH) unset(PLATFORM_DEFAULT) @@ -413,9 +413,7 @@ mark_as_advanced(WITH_CYCLES_NATIVE_ONLY) option(WITH_CYCLES_DEVICE_CUDA "Enable Cycles CUDA compute support" ON) option(WITH_CYCLES_DEVICE_OPTIX "Enable Cycles OptiX support" ON) -option(WITH_CYCLES_DEVICE_OPENCL "Enable Cycles OpenCL compute support" OFF) mark_as_advanced(WITH_CYCLES_DEVICE_CUDA) -mark_as_advanced(WITH_CYCLES_DEVICE_OPENCL) option(WITH_CUDA_DYNLOAD "Dynamically load CUDA libraries at runtime" ON) mark_as_advanced(WITH_CUDA_DYNLOAD) diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index c3acbbe73ff..2994b623ce5 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -296,15 +296,11 @@ if(WITH_OPENIMAGEDENOISE) endif() if(WITH_CYCLES_STANDALONE) - set(WITH_CYCLES_DEVICE_OPENCL TRUE) set(WITH_CYCLES_DEVICE_CUDA TRUE) endif() # TODO(sergey): Consider removing it, only causes confusion in interface. set(WITH_CYCLES_DEVICE_MULTI TRUE) -# TODO: force disabled for now since it does not build -set(WITH_CYCLES_DEVICE_OPENCL OFF) - # Logging capabilities using GLog library. if(WITH_CYCLES_LOGGING) add_definitions(-DWITH_CYCLES_LOGGING) diff --git a/intern/cycles/blender/CMakeLists.txt b/intern/cycles/blender/CMakeLists.txt index c730d73075d..b1127fa7850 100644 --- a/intern/cycles/blender/CMakeLists.txt +++ b/intern/cycles/blender/CMakeLists.txt @@ -95,10 +95,6 @@ set(ADDON_FILES add_definitions(${GL_DEFINITIONS}) -if(WITH_CYCLES_DEVICE_OPENCL) - add_definitions(-DWITH_OPENCL) -endif() - if(WITH_MOD_FLUID) add_definitions(-DWITH_FLUID) endif() diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index 390f4d9c67a..b750ae5db6b 100644 --- a/intern/cycles/blender/addon/engine.py +++ b/intern/cycles/blender/addon/engine.py @@ -18,39 +18,6 @@ from __future__ import annotations -def _is_using_buggy_driver(): - import gpu - # We need to be conservative here because in multi-GPU systems display card - # might be quite old, but others one might be just good. - # - # So We shouldn't disable possible good dedicated cards just because display - # card seems weak. And instead we only blacklist configurations which are - # proven to cause problems. - if gpu.platform.vendor_get() == "ATI Technologies Inc.": - import re - version = gpu.platform.version_get() - if version.endswith("Compatibility Profile Context"): - # Old HD 4xxx and 5xxx series drivers did not have driver version - # in the version string, but those cards do not quite work and - # causing crashes. - return True - regex = re.compile(".*Compatibility Profile Context ([0-9]+(\\.[0-9]+)+)$") - if not regex.match(version): - # Skip cards like FireGL - return False - version = regex.sub("\\1", version).split('.') - return int(version[0]) == 8 - return False - - -def _workaround_buggy_drivers(): - if _is_using_buggy_driver(): - import _cycles - if hasattr(_cycles, "opencl_disable"): - print("Cycles: OpenGL driver known to be buggy, disabling OpenCL platform.") - _cycles.opencl_disable() - - def _configure_argument_parser(): import argparse # No help because it conflicts with general Python scripts argument parsing @@ -73,7 +40,7 @@ def _configure_argument_parser(): action='store_true') parser.add_argument("--cycles-device", help="Set the device to use for Cycles, overriding user preferences and the scene setting." - "Valid options are 'CPU', 'CUDA', 'OPTIX' or 'OPENCL'." + "Valid options are 'CPU', 'CUDA' or 'OPTIX'." "Additionally, you can append '+CPU' to any GPU type for hybrid rendering.", default=None) return parser @@ -118,19 +85,6 @@ def init(): import _cycles import os.path - # Workaround possibly buggy legacy drivers which crashes on the OpenCL - # device enumeration. - # - # This checks are not really correct because they might still fail - # in the case of multiple GPUs. However, currently buggy drivers - # are really old and likely to be used in single GPU systems only - # anyway. - # - # Can't do it in the background mode, so we hope OpenCL is no enabled - # in the user preferences. - if not bpy.app.background: - _workaround_buggy_drivers() - path = os.path.dirname(__file__) user_path = os.path.dirname(os.path.abspath(bpy.utils.user_resource('CONFIG', path=''))) diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index d297c7eedc2..96d0569bd0d 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -111,7 +111,6 @@ enum_device_type = ( ('CPU', "CPU", "CPU", 0), ('CUDA', "CUDA", "CUDA", 1), ('OPTIX', "OptiX", "OptiX", 3), - ('OPENCL', "OpenCL", "OpenCL", 2) ) enum_texture_limit = ( @@ -717,39 +716,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): default=False ) - debug_opencl_kernel_type: EnumProperty( - name="OpenCL Kernel Type", - default='DEFAULT', - items=( - ('DEFAULT', "Default", ""), - ('MEGA', "Mega", ""), - ('SPLIT', "Split", ""), - ), - update=CyclesRenderSettings._devices_update_callback - ) - - debug_opencl_device_type: EnumProperty( - name="OpenCL Device Type", - default='ALL', - items=( - ('NONE', "None", ""), - ('ALL', "All", ""), - ('DEFAULT', "Default", ""), - ('CPU', "CPU", ""), - ('GPU', "GPU", ""), - ('ACCELERATOR', "Accelerator", ""), - ), - update=CyclesRenderSettings._devices_update_callback - ) - - debug_use_opencl_debug: BoolProperty(name="Debug OpenCL", default=False) - - debug_opencl_mem_limit: IntProperty( - name="Memory limit", - default=0, - description="Artificial limit on OpenCL memory usage in MB (0 to disable limit)" - ) - @classmethod def register(cls): bpy.types.Scene.cycles = PointerProperty( @@ -1291,14 +1257,12 @@ class CyclesPreferences(bpy.types.AddonPreferences): def get_device_types(self, context): import _cycles - has_cuda, has_optix, has_opencl = _cycles.get_device_types() + has_cuda, has_optix = _cycles.get_device_types() list = [('NONE', "None", "Don't use compute device", 0)] if has_cuda: list.append(('CUDA', "CUDA", "Use CUDA for GPU acceleration", 1)) if has_optix: list.append(('OPTIX', "OptiX", "Use OptiX for GPU acceleration", 3)) - if has_opencl: - list.append(('OPENCL', "OpenCL", "Use OpenCL for GPU acceleration", 2)) return list compute_device_type: EnumProperty( @@ -1323,7 +1287,7 @@ class CyclesPreferences(bpy.types.AddonPreferences): def update_device_entries(self, device_list): for device in device_list: - if not device[1] in {'CUDA', 'OPTIX', 'OPENCL', 'CPU'}: + if not device[1] in {'CUDA', 'OPTIX', 'CPU'}: continue # Try to find existing Device entry entry = self.find_existing_device_entry(device) @@ -1357,23 +1321,10 @@ class CyclesPreferences(bpy.types.AddonPreferences): elif entry.type == 'CPU': cpu_devices.append(entry) # Extend all GPU devices with CPU. - if compute_device_type in {'CUDA', 'OPTIX', 'OPENCL'}: + if compute_device_type != 'CPU': devices.extend(cpu_devices) return devices - # For backwards compatibility, only returns CUDA and OpenCL but still - # refreshes all devices. - def get_devices(self, compute_device_type=''): - import _cycles - # Ensure `self.devices` is not re-allocated when the second call to - # get_devices_for_type is made, freeing items from the first list. - for device_type in ('CUDA', 'OPTIX', 'OPENCL'): - self.update_device_entries(_cycles.available_devices(device_type)) - - cuda_devices = self.get_devices_for_type('CUDA') - opencl_devices = self.get_devices_for_type('OPENCL') - return cuda_devices, opencl_devices - def get_num_gpu_devices(self): import _cycles device_list = _cycles.available_devices(self.compute_device_type) diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 4ce090d8c10..ba8d585441f 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -87,12 +87,6 @@ def use_cpu(context): return (get_device_type(context) == 'NONE' or cscene.device == 'CPU') -def use_opencl(context): - cscene = context.scene.cycles - - return (get_device_type(context) == 'OPENCL' and cscene.device == 'GPU') - - def use_cuda(context): cscene = context.scene.cycles @@ -1801,14 +1795,6 @@ class CYCLES_RENDER_PT_debug(CyclesDebugButtonsPanel, Panel): c @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
