2 # -*- coding: utf-8 -*-
3 """All OpenCL tests that come with piglit, using default settings."""
5 # Because these profiles put all of the names in the global scope and rely on
6 # __all__ to hide private names there will be a lot errors from pylint about
7 # invalid constant names, they're not really fixable, so just hide them.
8 # pylint: disable=invalid-name
10 from __future__
import (
11 absolute_import
, division
, print_function
, unicode_literals
16 from framework
.profile
import TestProfile
17 from framework
.test
.piglit_test
import PiglitCLTest
, CLProgramTester
, ROOT_DIR
18 from framework
import grouptools
19 from .py_modules
.constants
import TESTS_DIR
, GENERATED_TESTS_DIR
23 profile
= TestProfile()
26 with profile
.test_list
.group_manager(PiglitCLTest
, 'custom') as g
:
27 g(['cl-custom-run-simple-kernel'], 'Run simple kernel')
28 g(['cl-custom-flush-after-enqueue-kernel'], 'Flush after enqueue kernel')
29 g(['cl-custom-r600-create-release-buffer-bug'],
30 'r600 create release buffer bug')
31 g(['cl-custom-buffer-flags'], 'Buffer flags')
33 with profile
.test_list
.group_manager(PiglitCLTest
, 'api') as g
:
35 g(['cl-api-get-platform-ids'], 'clGetPlatformIDs')
36 g(['cl-api-get-platform-info'], 'clGetPlatformInfo')
37 g(['cl-api-get-extension-function-address-for-platform'],
38 'clGetExtensionFunctionAddressForPlatform')
41 g(['cl-api-get-device-ids'], 'clGetDeviceIDs')
42 g(['cl-api-get-device-info'], 'clGetDeviceInfo')
45 g(['cl-api-create-context'], 'clCreateContext')
46 g(['cl-api-create-context-from-type'], 'clCreateContextFromType')
47 g(['cl-api-get-context-info'], 'clGetContextInfo')
48 g(['cl-api-retain_release-context'],
49 'clRetainContext and clReleaseContext')
52 g(['cl-api-create-command-queue'], 'clCreateCommandQueue')
53 g(['cl-api-retain_release-command-queue'],
54 'clRetainComandQueue and clReleaseCommandQueue')
55 g(['cl-api-get-command-queue-info'], 'clGetCommandQueueInfo')
58 g(['cl-api-create-buffer'], 'clCreateBuffer')
59 g(['cl-api-create-image'], 'clCreateImage')
60 g(['cl-api-create-sampler'], 'clCreateSampler')
61 g(['cl-api-enqueue-copy-buffer'], 'clEnqueueCopyBuffer')
62 g(['cl-api-enqueue-copy-buffer-rect'], 'clEnqueueCopyBufferRect')
63 g(['cl-api-enqueue-read_write-buffer'],
64 'clEnqueueReadBuffer and clEnqueueWriteBuffer')
65 g(['cl-api-enqueue-fill-buffer'], 'clEnqueueFillBuffer')
66 g(['cl-api-enqueue-fill-image'], 'clEnqueueFillImage')
67 g(['cl-api-enqueue-migrate-mem-objects'], 'clEnqueueMigrateMemObjects')
68 g(['cl-api-get-mem-object-info'], 'clGetMemObjectInfo')
69 g(['cl-api-get-image-info'], 'clGetImageInfo')
70 g(['cl-api-retain_release-mem-object'],
71 'clRetainMemObject and clReleaseMemObject')
73 g(['cl-api-create-program-with-binary'], 'clCreateProgramWithBinary')
74 g(['cl-api-create-program-with-source'], 'clCreateProgramWithSource')
75 g(['cl-api-build-program'], 'clBuildProgram')
76 g(['cl-api-compile-program'], 'clCompileProgram')
77 g(['cl-api-link-program'], 'clLinkProgram')
78 g(['cl-api-get-program-info'], 'clGetProgramInfo')
79 g(['cl-api-get-program-build-info'], 'clGetProgramBuildInfo')
80 g(['cl-api-retain_release-program'],
81 'clRetainProgram and clReleaseProgram')
82 g(['cl-api-unload-compiler'], 'clUnloadCompiler')
85 g(['cl-api-create-kernel'], 'clCreateKernel')
86 g(['cl-api-create-kernels-in-program'], 'clCreateKernelsInProgram')
87 g(['cl-api-get-kernel-arg-info'], 'clGetKernelArgInfo')
88 g(['cl-api-get-kernel-info'], 'clGetKernelInfo')
89 g(['cl-api-get-kernel-work-group-info'], 'clGetKernelWorkGroupInfo')
90 g(['cl-api-retain_release-kernel'], 'clRetainKernel and clReleaseKernel')
91 g(['cl-api-set-kernel-arg'], 'clSetKernelArg')
94 g(['cl-api-get-event-info'], 'clGetEventInfo')
95 g(['cl-api-retain_release-event'], 'clRetainEvent and clReleaseEvent')
97 with profile
.test_list
.group_manager(PiglitCLTest
, 'program') as g
:
98 g(['cl-program-max-work-item-sizes'],
99 'Run kernel with max work item sizes')
100 g(['cl-program-bitcoin-phatk'], 'Bitcoin: phatk kernel')
101 g(['cl-program-predefined-macros'], 'Check predefined preprocessor macros')
103 with profile
.test_list
.group_manager(PiglitCLTest
, 'interop') as g
:
104 g(['cl-interop-egl_khr_cl_event2'], 'EGL_KHR_cl_event2')
107 def add_program_test_dir(group
, dirpath
, buildbase
, installbase
):
108 for filename
in os
.listdir(os
.path
.join(buildbase
, dirpath
)):
109 testname
, ext
= os
.path
.splitext(filename
)
110 if ext
not in ['.cl', '.program_test']:
113 profile
.test_list
[grouptools
.join(group
, testname
)] = CLProgramTester(
114 os
.path
.join(installbase
, dirpath
, os
.path
.basename(filename
)))
117 base_test_dir
= os
.path
.basename(TESTS_DIR
)
118 base_gen_dir
= os
.path
.basename(GENERATED_TESTS_DIR
)
120 add_program_test_dir(grouptools
.join('program', 'build'),
121 os
.path
.join('cl', 'program', 'build'),
124 add_program_test_dir(grouptools
.join('program', 'build', 'fail'),
125 os
.path
.join('cl', 'program', 'build', 'fail'),
128 add_program_test_dir(grouptools
.join('program', 'execute'),
129 os
.path
.join('cl', 'program', 'execute'),
132 add_program_test_dir(grouptools
.join('program', 'execute'),
133 os
.path
.join('cl', 'program', 'execute', 'builtin', 'atomic'),
136 add_program_test_dir(grouptools
.join('program', 'execute'),
137 os
.path
.join('cl', 'program', 'execute', 'builtin', 'convert'),
141 # Run generated built-in tests
142 add_program_test_dir(grouptools
.join('program', 'execute', 'builtin'),
143 os
.path
.join('cl', 'builtin', 'int'),
146 add_program_test_dir(grouptools
.join('program', 'execute', 'builtin'),
147 os
.path
.join('cl', 'builtin', 'math'),
150 add_program_test_dir(grouptools
.join('program', 'execute', 'builtin'),
151 os
.path
.join('cl', 'builtin', 'relational'),
154 add_program_test_dir(grouptools
.join('program', 'execute', 'builtin'),
155 os
.path
.join('cl', 'builtin', 'common'),
158 add_program_test_dir(grouptools
.join('program', 'execute', 'builtin'),
159 os
.path
.join('cl', 'builtin', 'misc'),
162 add_program_test_dir(grouptools
.join('program', 'execute', 'store'),
163 os
.path
.join('cl', 'store'),
166 add_program_test_dir(grouptools
.join('program', 'execute', 'vstore'),
167 os
.path
.join('cl', 'vstore'),
170 add_program_test_dir(grouptools
.join('program', 'execute', 'vload'),
171 os
.path
.join('cl', 'vload'),