Cycles: Rework the way how OpenCL devices are created
authorSergey Sharybin <sergey.vfx@gmail.com>
Sat, 27 Jun 2015 13:03:51 +0000 (15:03 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Sat, 27 Jun 2015 13:13:08 +0000 (15:13 +0200)
commit09dc470982c9ceb1e4dc72ee34cf4e752ba074dc
treea77b413d13385e6deefafdb3229399f431b22b17
parent17f12fc71a294ed00a1dd88093ec7ac516e0c15a
Cycles: Rework the way how OpenCL devices are created

It was annoying copy-paste happened across OpenCL device constructor, device
enumeration and split kernel checks. Now those areas are using an utility
function which returns pairs of platform and device IDs for devices which are
supported by Cycles and enumeration is happening inside that list.

This makes it so filtering is happening in a single place, so there's no need
to keep 3 different functions in sync.

This commit also fixes a bug with wrong enumeration of devices caused by recent
fixes. Those fixes were in fact wrong and only happened to appear to be working
on laptop with optimus card on Linux. Root of those issues is in fact in bad
Linux driver for optimus cards.
intern/cycles/device/device_opencl.cpp