platform/upstream/OpenCL-ICD-Loader.git
4 years agoFree adapter names and add check for DXGI interface queries
Nikhil Joshi [Tue, 10 Sep 2019 13:59:11 +0000 (19:29 +0530)]
Free adapter names and add check for DXGI interface queries

Add adapterFree to free memory allocated to hold WinAdapter
handles.
Also, check for successful query of DXGIFactory interfaces.

4 years agoAdd return value checks for adapterAdd.
Nikhil Joshi [Tue, 3 Sep 2019 05:11:25 +0000 (10:41 +0530)]
Add return value checks for adapterAdd.

Return boolean result from adapterAdd API
and add checks for success of this API
for better error reporting.

4 years agoFix variable naming, array size and cleanup paths.
Nikhil Joshi [Thu, 22 Aug 2019 08:35:36 +0000 (14:05 +0530)]
Fix variable naming, array size and cleanup paths.

Fix changes added as part of para_virtualization support
1. to use camelCase for variable names
2. Use sizeof(element) while calculating array size.
3. Free/unload allocations/libraries during cleanup.

4 years agoMinor fixes to para-virtualization support
Nikhil Joshi [Mon, 12 Aug 2019 14:33:26 +0000 (20:03 +0530)]
Minor fixes to para-virtualization support

Changes to following aspects of para-virtualization changes -
1. Revert platform[0] override when platform is NULL

4 years agoMerge branch 'KhronosGroup-master' into new_para_virtual
Nikhil Joshi [Fri, 9 Aug 2019 10:22:37 +0000 (15:52 +0530)]
Merge branch 'KhronosGroup-master' into new_para_virtual

4 years agoUpdate nikhiljnv:new_para_virtual with Khronos master
Nikhil Joshi [Fri, 9 Aug 2019 10:14:24 +0000 (15:44 +0530)]
Update nikhiljnv:new_para_virtual with Khronos master

Merge branch 'master' of https://github.com/KhronosGroup/OpenCL-ICD-Loader into KhronosGroup-master

4 years agoInstall to standard locations using GNUInstallDirs
Craig Andrews [Tue, 30 Jul 2019 19:05:27 +0000 (15:05 -0400)]
Install to standard locations using GNUInstallDirs

Different distributions may specify different paths; using GNUInstallDirs ensures that everything installed to the correct location for all systems. For example, amd64 Debian uses lib64 as opposed to lib, so hardcoding lib would be wrong for Debian.

4 years agoUse QueryAdapter APIs as per MS directives
Nikhil Joshi [Fri, 12 Jul 2019 10:12:54 +0000 (15:42 +0530)]
Use QueryAdapter APIs as per MS directives

Update ICD loader to use QueryAdapter APIs
as per MS directives for para-virtualization.

This includes changes to -
1. Order OpenCL platforms consistent with Windows adapters,
   to honor user-settings for multi-adapter machines.
2. Fix OS version detection.
3. Some minor fixes including
    1. Add trace prints at required places.
    2. Fix build failure in getting the address of D3DKMTQueryAdapterInfo.
    3. Fix early return platform enumeartion if there are no entries found for old reg key
       under "HKLM\\SOFTWARE\\Khronos\\OpenCL\\Vendors" to allow add for the entries found
       using DXGK interface and HKR entries.
4. Some other fixes including
    1. Update README.md with WDK dependency information.
    2. Move AddAdapter* call inside for which got misplaced while resolving conflicts.
    3. Free WinAdapter allocations and avoid overriding NULL platform.
5. Fixes based on review comments including -
    1. WinAdapter is reallocated with previous allocation freed.
       However, the final allocation is not freed.
       Fixed the same to free at the end of enumeration.
    2. Fix header file ordering by including windows headers
       inside necessary header files.

4 years agoincrease loader rev for environment variable support
bashbaug [Wed, 17 Jul 2019 15:48:21 +0000 (08:48 -0700)]
increase loader rev for environment variable support

4 years agoneed to include a lower-case windows.h for cross-compilation
bashbaug [Wed, 17 Jul 2019 15:45:04 +0000 (08:45 -0700)]
need to include a lower-case windows.h for cross-compilation

4 years agoinitial ICD loader environment variable support (#77)
Ben Ashbaugh [Tue, 16 Jul 2019 15:09:15 +0000 (08:09 -0700)]
initial ICD loader environment variable support (#77)

* basic ICD loader env var support for OCL_ICD_VENDORS

* added envvars source files

* added OCL_ICD_FILENAMES support

* added README section describing debug environment variables

* refactored platform specific defines into icd_platform.h

* disable tracing

4 years agoMerge pull request #7 from KhronosGroup/master
Nikhil Joshi [Tue, 2 Jul 2019 08:05:13 +0000 (13:35 +0530)]
Merge pull request #7 from KhronosGroup/master

Merge master branch of Khronos

4 years agoWindows 10 RS4 Support for the OpenCL ICD Loader w/ Build Option (#78)
Ben Ashbaugh [Mon, 1 Jul 2019 12:53:41 +0000 (05:53 -0700)]
Windows 10 RS4 Support for the OpenCL ICD Loader w/ Build Option (#78)

* Windows 10 RS4 support for OpenCL ICD as per MS directive

Motivation - MS is adopting DCHU complaince and for For RS4 it will be mandatory for OpenCL to load via registry keys contained only within the HKR section of the registry as writes outside of HKR will not be allowed for the INF. It is also to support ParaV feature of the OS to make it "virtualization-ready".

* Update Copyright year
* Fix vendors enumeration on 32-bit Windows OS
* Update CMake file for detecting necessary includes for the Windows WDK
* Add option to build with or without the WDK (default: with)
* Documented Windows WDK dependency

4 years agoadd CI badges for travis-ci and appveyor
bashbaug [Tue, 11 Jun 2019 20:30:45 +0000 (13:30 -0700)]
add CI badges for travis-ci and appveyor

5 years agobasic appveyor enabling
bashbaug [Tue, 7 May 2019 21:10:10 +0000 (14:10 -0700)]
basic appveyor enabling

5 years agosimple travis CI enabling
bashbaug [Tue, 7 May 2019 21:02:42 +0000 (14:02 -0700)]
simple travis CI enabling

5 years agofix README typos
bashbaug [Tue, 21 May 2019 17:01:36 +0000 (10:01 -0700)]
fix README typos

5 years agoremoved non-CMake build files
bashbaug [Thu, 11 Apr 2019 16:56:36 +0000 (09:56 -0700)]
removed non-CMake build files
updated README with CMake build instructions

5 years agoDownstream MinGW fixes
Morris Hafner [Wed, 8 May 2019 12:17:55 +0000 (13:17 +0100)]
Downstream MinGW fixes

* Don't include DX SDK at all on MinGW (MinGW have their own headers)
* Lower case header name for cross-compilation on Linux

5 years agoCreate directory tree, fix warnings, cmake improvements (#58)
Ben Ashbaugh [Tue, 7 May 2019 14:13:17 +0000 (07:13 -0700)]
Create directory tree, fix warnings, cmake improvements (#58)

* fix make test

* include CTest and wrap tests with BUILD_TESTING

* move loader files to their own directory

* create specific directories for Windows and Linux

* cmake improvements

* fix path to map file for linux build

* add definition for CL_TARGET_OPENCL_VERSION

* fix warnings

* don't use target_link_options for cmake compatibility

* remove SHARED from a few cmake files

5 years agoOption to allow for dynamic linking with VC++ Runtime (#60)
Artur Harasimiuk [Tue, 7 May 2019 14:08:28 +0000 (16:08 +0200)]
Option to allow for dynamic linking with VC++ Runtime (#60)

By default ICD loader will use static linking. However, you can specifiy
cmake parameter USE_DYNAMIC_VCXX_RUNTIME to switch to dynamic. For
example:
  cmake -DUSE_DYNAMIC_VCXX_RUNTIME=TRUE ..

Signed-off-by: Artur Harasimiuk <artur.harasimiuk@intel.com>
5 years agoDo parameter validation in clGetExtensionFunctionAddress
Alastair Murray [Thu, 11 Apr 2019 16:17:06 +0000 (17:17 +0100)]
Do parameter validation in clGetExtensionFunctionAddress

Also undefine the local macros as soon as possible.

Patch originally from Jeroen Ketema.

5 years agoStatically link with VC++ Runtime (#57)
Artur Harasimiuk [Wed, 10 Apr 2019 18:10:53 +0000 (20:10 +0200)]
Statically link with VC++ Runtime (#57)

* Statically link with VC++ Runtime

VC++ Runtime dynamic library may not be available in some cases. Thus,
by doing static linking it makes dll independent of already installed
software and can be used without problems.

Change-Id: I8bb71db2f3dc48bc9ec976cdbb597d2ec812ce54
Signed-off-by: Artur Harasimiuk <artur.harasimiuk@intel.com>
* Extend static linking of VC++ Runtime

adding MinSizeRel and RelWithDebInfo targets

Change-Id: I740002ca47ad4a65548b9fcad87817f730511c13
Signed-off-by: Artur Harasimiuk <artur.harasimiuk@intel.com>
5 years agofix compilation with VS2010
Michael Eiler [Wed, 19 Apr 2017 05:42:46 +0000 (07:42 +0200)]
fix compilation with VS2010

5 years agoUpdate icd_windows.c (#51)
cos-public [Sun, 7 Apr 2019 22:38:26 +0000 (05:08 +0630)]
Update icd_windows.c (#51)

Return TRUE from khrIcdOsVendorsEnumerate() even if RegOpenKeyExA() fails to open the key.

5 years agoChange header license to Apache 2.0 (#53)
Khronos Group Webmaster [Sun, 7 Apr 2019 22:29:04 +0000 (18:29 -0400)]
Change header license to Apache 2.0 (#53)

5 years agoswitch README from plain text to markdown
bashbaug [Tue, 26 Mar 2019 15:28:42 +0000 (08:28 -0700)]
switch README from plain text to markdown

no major content updates, just minor wording fixes.

5 years agoCreate LICENSE
Khronos Group Webmaster [Wed, 20 Feb 2019 16:01:17 +0000 (11:01 -0500)]
Create LICENSE

5 years agoDelete LICENSE.txt
Khronos Group Webmaster [Wed, 20 Feb 2019 16:01:00 +0000 (11:01 -0500)]
Delete LICENSE.txt

5 years agoFix bugs encountered while building with VS 2017 64bit (#39)
SilverCamel [Tue, 12 Feb 2019 15:12:08 +0000 (20:42 +0530)]
Fix bugs encountered while building with VS 2017 64bit (#39)

5 years agoUse PROJECT_SOURCE_DIR in CMakefile
Kedar Patil [Sat, 26 Jan 2019 00:41:19 +0000 (06:11 +0530)]
Use PROJECT_SOURCE_DIR in CMakefile

Instead of using CMAKE_CURRENT_SOURCE_DIR. This facilitates using the
ICD loader as a subproject of another project.

5 years agoUpdate .gitignore to ignore build directory (#42)
mancoast [Sat, 26 Jan 2019 00:23:25 +0000 (19:23 -0500)]
Update .gitignore to ignore build directory (#42)

5 years agoAdd option to build static library.
Kedar Patil [Tue, 6 Mar 2018 14:46:41 +0000 (20:16 +0530)]
Add option to build static library.

Also add explanatory comment on why shared library should be preferred.

5 years agoadd extension function comments
bashbaug [Wed, 7 Feb 2018 22:11:13 +0000 (14:11 -0800)]
add extension function comments

As per working group discussion, most extension functions do not need to
be "ICD-aware", and hence do not need to be handled in the ICD loader
and dispatch tables.

5 years agoSupport building on macOS (#40)
Kévin Petit [Tue, 6 Nov 2018 17:29:44 +0000 (17:29 +0000)]
Support building on macOS (#40)

Use the the linux code in that case.

The resulting library hasn't been tested but it is already
useful as is as a library to link against to build-test
things like the CTS on macOS.

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
5 years agoCreate CODE_OF_CONDUCT.md
Khronos Group Webmaster [Wed, 10 Oct 2018 19:49:05 +0000 (15:49 -0400)]
Create CODE_OF_CONDUCT.md

6 years agoFix vendors enumeration on 32-bit Windows OS (#28)
Ofir Cohen [Thu, 26 Apr 2018 14:44:05 +0000 (17:44 +0300)]
Fix vendors enumeration on 32-bit Windows OS (#28)

When running 32-bit OpenCL applications on a 32-bit OS, we need to
use the registry keys without the "Wow" suffix. On 64-bit OSes and
32-bit applications, OTOH, we must use the Wow suffix.

6 years agoRemove GL/EGL headers
Lukasz Towarek [Thu, 5 Apr 2018 07:22:03 +0000 (09:22 +0200)]
Remove GL/EGL headers

6 years agodriver stub: Fix dangling & NULL ptr dereference (#27)
Pavel Begunkov [Tue, 20 Feb 2018 14:30:35 +0000 (17:30 +0300)]
driver stub: Fix dangling & NULL ptr dereference (#27)

1. NULL pointer dereference
2. dangling pointer dereference
3. Memory leak (newly created device isn't returned to user)
4. Ignoring errors + invalid error logging

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
6 years agoStatic analysis fixes.
Grzegorz Wawiorko [Thu, 10 Aug 2017 13:07:04 +0000 (15:07 +0200)]
Static analysis fixes.

6 years agoAdded OpenCL Universal Driver Support for Win10 RS3 (#21)
Ofir Cohen [Tue, 3 Oct 2017 14:37:14 +0000 (17:37 +0300)]
Added OpenCL Universal Driver Support for Win10 RS3 (#21)

Starting from Windows 10 RS3+ Graphics Drivers are no longer allowed to
write HKLM entries, and hence the current registry key:
HKLM\SOFTWARE\Khronos\OpenCL\Vendors

Is no longer applicable to graphics drivers for registering their ICD.
Instead, graphics drivers can write to either of the 2 registry keys
below:
1) Display Adapter HKR
2) Software Components HKR

Graphics Drivers (starting from RS3) have dedicated component INF files and are
referenced via the CopyINF directive and/or (optional) "INF AddComponent directive".

Every such component, e.g. OpenCL instance (ICD), is assigned a unique device
instance ID (e.g. 0000, 0001, etc) under the "Software Component" GUID and use it to
store the path to its ICD.

Therefore we enumerate ICDs in the following places (and also in the following order):
1) Display Adapters HKRs (using the display adapter GUID)
2) Software Component HKRs (using the CM_* APIs to traverse the device tree)
3) The usual "Vendors" registry key (see above)

Corresponding ICD extension updates were made with KhronosGroup/OpenCL-Registry#30.

7 years agoAllow building ICD loader as a CMake subproject.
Laurent Morichetti [Thu, 18 May 2017 17:05:46 +0000 (10:05 -0700)]
Allow building ICD loader as a CMake subproject.

Tweaked CMakeLists.txt to make it possible to build OpenCL-ICD-Loader as a
subproject.

7 years agoUpdate Windows DLL version to 2.2 (#19)
John Poole [Tue, 6 Jun 2017 12:58:16 +0000 (08:58 -0400)]
Update Windows DLL version to 2.2 (#19)

7 years agoAdd OpenCL 2.2 API to ICD Loader.
bashbaug [Tue, 6 Dec 2016 18:34:24 +0000 (10:34 -0800)]
Add OpenCL 2.2 API to ICD Loader.

7 years agocorrect the case that properties is NULL for clCreateContextFromType (#8)
guoyejun [Tue, 13 Sep 2016 14:52:48 +0000 (22:52 +0800)]
correct the case that properties is NULL for clCreateContextFromType (#8)

Handle properties==NULL in clCreateContextFromType

According to spec, for function clCreateContextFromType, properties can also be
NULL in which case the platform that is selected is implementation-defined,
while the current code returns CL_INVALID_PLATFORM.

8 years agoMerge pull request #1 from KhronosGroup/remove-egl-dependency
Kedar Patil [Tue, 31 May 2016 15:53:56 +0000 (21:23 +0530)]
Merge pull request #1 from KhronosGroup/remove-egl-dependency

Remove dependency on EGL/KHR headers from README.

8 years agoUpdating the ICD loader license.
Kedar Patil [Tue, 31 May 2016 15:28:18 +0000 (20:58 +0530)]
Updating the ICD loader license.

The license text was approved by the OpenCL Working Group on May 24, 2016.

8 years agoRemove dependency on EGL/KHR headers from README
James Price [Wed, 10 Feb 2016 19:34:09 +0000 (19:34 +0000)]
Remove dependency on EGL/KHR headers from README

8 years agoAdding sources for OpenCL 2.1 ICD Loader.
Kedar Patil [Thu, 12 Nov 2015 18:33:50 +0000 (00:03 +0530)]
Adding sources for OpenCL 2.1 ICD Loader.