Skip to content

Commit 69dc9d4

Browse files
committed
Merge branch 'main' into cl_khr_unified_svm
2 parents ca6efa1 + da95369 commit 69dc9d4

547 files changed

Lines changed: 7279 additions & 6029 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/presubmit.yml

Lines changed: 97 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,26 @@ jobs:
55
build:
66
name: Build ${{ matrix.os }} ${{ matrix.arch }}${{ matrix.extra }}
77
runs-on: ${{ matrix.os }}
8-
env:
9-
JOB_ARCHITECTURE: ${{ matrix.arch }}
10-
JOB_ENABLE_GL: ${{ matrix.gl }}
11-
JOB_ENABLE_DEBUG: ${{ matrix.debug }}
128
strategy:
139
fail-fast: false
1410
matrix:
15-
mainmatrix: [true]
11+
build-type: [Release]
12+
gl: [0]
1613
os: [ubuntu-22.04, macos-latest, windows-latest]
1714
include:
1815
- os: ubuntu-22.04
19-
mainmatrix: true
2016
gl: 1
2117
extra: " gl"
2218
- os: ubuntu-22.04
23-
mainmatrix: false
2419
arch: arm
2520
- os: ubuntu-22.04
26-
mainmatrix: false
2721
arch: aarch64
28-
debug: 1
22+
build-type: Debug
2923
extra: " debug"
3024
- os: ubuntu-22.04
31-
mainmatrix: false
3225
arch: android-arm
3326
android_arch_abi: armeabi-v7a
3427
- os: ubuntu-22.04
35-
mainmatrix: false
3628
arch: android-aarch64
3729
android_arch_abi: arm64-v8a
3830
steps:
@@ -84,9 +76,101 @@ jobs:
8476
echo "ANDROID_NDK=$ANDROID_NDK" >> $GITHUB_ENV
8577
export ANDROID_ARCH_ABI=${{ matrix.android_arch_abi }}
8678
echo "ANDROID_ARCH_ABI=$ANDROID_ARCH_ABI" >> $GITHUB_ENV
87-
- name: Build
79+
- name: Prepare CMake Toolchain file
8880
shell: bash
89-
run: ./presubmit.sh
81+
run: |
82+
if [[ '${{ matrix.arch }}' == android-* ]]; then
83+
TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
84+
else
85+
TOOLCHAIN_FILE='${{ github.workspace }}'/toolchain.cmake
86+
touch ${TOOLCHAIN_FILE}
87+
fi
88+
89+
TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf
90+
TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu
91+
92+
if [[ '${{ matrix.arch }}' != android-* ]]; then
93+
if [[ '${{ matrix.arch }}' != "" && ${RUNNER_OS} != "Windows" ]]; then
94+
TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${{ matrix.arch }}
95+
TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR}
96+
97+
echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE}
98+
echo "SET(CMAKE_SYSTEM_PROCESSOR ${{ matrix.arch }})" >> ${TOOLCHAIN_FILE}
99+
echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE}
100+
echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE}
101+
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE}
102+
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE}
103+
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE}
104+
fi
105+
fi
106+
echo "TOOLCHAIN_FILE=${TOOLCHAIN_FILE}" >> $GITHUB_ENV
107+
- name: Prepare Android CMake arguments
108+
if: ${{ matrix.arch == 'android-arm' || matrix.arch == 'android-aarch64' }}
109+
shell: bash
110+
run: |
111+
echo "CMAKE_CONFIG_ARGS_ANDROID=-DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ARCH_ABI}" >> $GITHUB_ENV
112+
- name: Fetch and build OpenCL ICD Loader
113+
shell: bash
114+
run: |
115+
git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
116+
cd OpenCL-ICD-Loader
117+
mkdir build
118+
cd build
119+
cmake .. -G Ninja \
120+
-DCMAKE_BUILD_TYPE=Release \
121+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
122+
-DOPENCL_ICD_LOADER_HEADERS_DIR='${{ github.workspace }}'/OpenCL-Headers/ \
123+
"${CMAKE_CONFIG_ARGS_ANDROID}"
124+
cmake --build . --parallel
125+
- name: Fetch Vulkan Headers
126+
shell: bash
127+
run: |
128+
git clone https://github.com/KhronosGroup/Vulkan-Headers.git
129+
- name: Fetch and build Vulkan Loader
130+
if: ${{ matrix.arch != 'android-arm' && matrix.arch != 'android-aarch64' }}
131+
shell: bash
132+
run: |
133+
git clone https://github.com/KhronosGroup/Vulkan-Loader.git
134+
cd Vulkan-Loader
135+
mkdir build
136+
cd build
137+
python3 ../scripts/update_deps.py
138+
cmake .. -G Ninja \
139+
-DCMAKE_BUILD_TYPE=Release \
140+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
141+
-DBUILD_WSI_XLIB_SUPPORT=OFF \
142+
-DBUILD_WSI_XCB_SUPPORT=OFF \
143+
-DBUILD_WSI_WAYLAND_SUPPORT=OFF \
144+
-C helper.cmake ..
145+
cmake --build . --parallel
146+
- name: Configure and build
147+
shell: bash
148+
run: |
149+
mkdir build
150+
cd build
151+
if [[ ${RUNNER_OS} == "Windows" ]]; then
152+
CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL"
153+
else
154+
CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL"
155+
if [[ '${{ matrix.arch }}' != android-* ]]; then
156+
CMAKE_OPENCL_LIBRARIES_OPTION="${CMAKE_OPENCL_LIBRARIES_OPTION} -lpthread"
157+
fi
158+
fi
159+
cmake .. -G Ninja \
160+
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
161+
-DCMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" \
162+
-DCL_INCLUDE_DIR='${{ github.workspace }}'/OpenCL-Headers \
163+
-DCL_LIB_DIR='${{ github.workspace }}'/OpenCL-ICD-Loader/build \
164+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
165+
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \
166+
-DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \
167+
-DUSE_CL_EXPERIMENTAL=ON \
168+
-DGL_IS_SUPPORTED=${{ matrix.gl }} \
169+
-DVULKAN_IS_SUPPORTED=ON \
170+
-DVULKAN_INCLUDE_DIR='${{ github.workspace }}'/Vulkan-Headers/include/ \
171+
-DVULKAN_LIB_DIR='${{ github.workspace }}'/Vulkan-Loader/build/loader/ \
172+
"${CMAKE_CONFIG_ARGS_ANDROID}"
173+
cmake --build . --parallel
90174
formatcheck:
91175
name: Check code format
92176
runs-on: ubuntu-22.04

CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ project(CLConform${CONFORMANCE_SUFFIX})
77

88
set(CMAKE_C_STANDARD 99)
99
set(CMAKE_C_STANDARD_REQUIRED ON)
10-
set(CMAKE_CXX_STANDARD 11)
10+
set(CMAKE_CXX_STANDARD 17)
1111
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1212

1313
add_definitions(-DCL_TARGET_OPENCL_VERSION=300)
@@ -100,7 +100,11 @@ if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang"
100100
add_cxx_flag_if_supported(-Wmisleading-indentation)
101101
add_cxx_flag_if_supported(-Wunused-function)
102102
add_cxx_flag_if_supported(-Wunused-variable)
103-
add_cxx_flag_if_supported(-Werror)
103+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24")
104+
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
105+
else()
106+
add_cxx_flag_if_supported(-Werror)
107+
endif()
104108
if(NOT CMAKE_BUILD_TYPE MATCHES "Release|RelWithDebInfo|MinSizeRel")
105109
# Enable more warnings if not doing a release build.
106110
add_cxx_flag_if_supported(-Wall)

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ Compiling the CTS requires the following CMake configuration options to be set:
1414
* `CL_INCLUDE_DIR` Points to the unified
1515
[OpenCL-Headers](https://github.com/KhronosGroup/OpenCL-Headers).
1616
* `CL_LIB_DIR` Directory containing the OpenCL library to build against.
17+
* `SPIRV_TOOLS_DIR` Directory containing the `spirv-as` and `spirv-val` binaries
18+
to be used in the CTS build process. Alternatively, the location to these binaries
19+
can be provided via the `PATH` variable.
1720
* `OPENCL_LIBRARIES` Name of the OpenCL library to link.
1821

1922
It is advised that the [OpenCL ICD-Loader](https://github.com/KhronosGroup/OpenCL-ICD-Loader)
@@ -29,16 +32,26 @@ a build, and compile.
2932
git clone https://github.com/KhronosGroup/OpenCL-CTS.git
3033
git clone https://github.com/KhronosGroup/OpenCL-Headers.git
3134
git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
35+
git clone https://github.com/KhronosGroup/SPIRV-Tools.git
36+
git clone https://github.com/KhronosGroup/SPIRV-Headers.git SPIRV-Tools/external/spirv-headers
37+
git clone https://github.com/google/effcee.git SPIRV-Tools/external/effcee
38+
git clone https://github.com/google/re2.git SPIRV-Tools/external/re2
39+
3240

3341
mkdir OpenCL-ICD-Loader/build
3442
cmake -S OpenCL-ICD-Loader -B OpenCL-ICD-Loader/build \
3543
-DOPENCL_ICD_LOADER_HEADERS_DIR=$PWD/OpenCL-Headers
3644
cmake --build ./OpenCL-ICD-Loader/build --config Release
3745

46+
mkdir SPIRV-Tools/build
47+
cmake -S SPIRV-Tools -B SPIRV-Tools/build -DSPIRV_SKIP_TESTS=ON
48+
cmake --build SPIRV-Tools/build --config Release
49+
3850
mkdir OpenCL-CTS/build
3951
cmake -S OpenCL-CTS -B OpenCL-CTS/build \
4052
-DCL_INCLUDE_DIR=$PWD/OpenCL-Headers \
4153
-DCL_LIB_DIR=$PWD/OpenCL-ICD-Loader/build \
54+
-DSPIRV_TOOLS_DIR=$PWD/SPIRV-Tools/build/tools/ \
4255
-DOPENCL_LIBRARIES=OpenCL
4356
cmake --build OpenCL-CTS/build --config Release
4457
```

presubmit.sh

Lines changed: 0 additions & 112 deletions
This file was deleted.

test_common/gl/setup.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
// See the License for the specific language governing permissions and
1414
// limitations under the License.
1515
//
16-
#ifndef _setup_h
17-
#define _setup_h
16+
#ifndef _gl_setup_h
17+
#define _gl_setup_h
1818

1919
#include <stdio.h>
2020
#include <stdlib.h>
2121
#include <string.h>
22+
#include <vector>
2223
#include "gl_headers.h"
2324
#ifdef __APPLE__
2425
#include <OpenCL/opencl.h>
@@ -36,13 +37,11 @@ class GLEnvironment
3637
GLEnvironment() {}
3738
virtual ~GLEnvironment() {}
3839

39-
virtual int Init( int *argc, char **argv, int use_opengl_32 ) = 0;
40+
virtual int Init(int *argc, char **argv, int use_opengl_32) = 0;
4041
virtual cl_context CreateCLContext( void ) = 0;
4142
virtual int SupportsCLGLInterop( cl_device_type device_type) = 0;
4243

43-
static GLEnvironment * Instance( void );
44-
45-
44+
static GLEnvironment *Instance(void);
4645
};
4746

48-
#endif // _setup_h
47+
#endif // _gl_setup_h

0 commit comments

Comments
 (0)