v3: Use extension check, not beignet check. Treat claiming to have the extension but not having the kernel as a failure.
--- (v2 was the un-numbered 10/10/16 08:07 version...which I subsequently noticed was broken in that it assumed a non-NULL clGetExtensionFunctionAddressForPlatform result meant the extension was supported, which it doesn't in general, https://www.khronos.org/registry/cl/sdk/2.1/docs/man/xhtml/clGetExtensionFunctionAddressForPlatform.html ) --- a/utests/builtin_kernel_block_motion_estimate_intel.cpp +++ b/utests/builtin_kernel_block_motion_estimate_intel.cpp @@ -8,6 +8,19 @@ OCLRELEASEACCELERATORINTEL * oclReleaseA void builtin_kernel_block_motion_estimate_intel(void) { + std::string extStr; + size_t param_value_size; + OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS, 0, 0, ¶m_value_size); + std::vector<char> param_value(param_value_size); + OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS, param_value_size, + param_value.empty() ? NULL : ¶m_value.front(), ¶m_value_size); + if (!param_value.empty()) + extStr = std::string(¶m_value.front(), param_value_size-1); + // cl_intel_motion_estimation depends on cl_intel_accelerator, so we only need to check one + if (strstr(extStr.c_str(), "cl_intel_motion_estimation") == NULL) { + printf("No cl_intel_motion_estimation, Skip!"); + return; + } char* built_in_kernel_names; size_t built_in_kernels_size; cl_int err = CL_SUCCESS; @@ -21,7 +34,8 @@ void builtin_kernel_block_motion_estimat if (strstr(built_in_kernel_names, "block_motion_estimate_intel") == NULL) { free(built_in_kernel_names); - return; + printf("Can't find block_motion_estimate_intel built-in kernel"); + OCL_ASSERT(0); } cl_program built_in_prog = clCreateProgramWithBuiltInKernels(ctx, 1, &device, built_in_kernel_names, &err); --- a/utests/CMakeLists.txt +++ b/utests/CMakeLists.txt @@ -287,7 +287,8 @@ set (utests_sources multi_queue_events.cpp compiler_mix.cpp compiler_math_3op.cpp - compiler_bsort.cpp) + compiler_bsort.cpp + builtin_kernel_block_motion_estimate_intel.cpp) if (LLVM_VERSION_NODOT VERSION_GREATER 34) SET(utests_sources @@ -328,7 +329,6 @@ else(GEN_PCI_ID) endif(GEN_PCI_ID) if (NOT_BUILD_STAND_ALONE_UTEST) - SET(utests_sources ${utests_sources} builtin_kernel_block_motion_estimate_intel.cpp) ADD_CUSTOM_TARGET(kernel_bin.bin DEPENDS ${kernel_bin}.bin) endif (NOT_BUILD_STAND_ALONE_UTEST) _______________________________________________ Beignet mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/beignet
