mirror of
https://github.com/opencv/opencv.git
synced 2025-06-11 11:45:30 +08:00

* dnn: Add a Vulkan based backend This commit adds a new backend "DNN_BACKEND_VKCOM" and a new target "DNN_TARGET_VULKAN". VKCOM means vulkan based computation library. This backend uses Vulkan API and SPIR-V shaders to do the inference computation for layers. The layer types that implemented in DNN_BACKEND_VKCOM include: Conv, Concat, ReLU, LRN, PriorBox, Softmax, MaxPooling, AvePooling, Permute This is just a beginning work for Vulkan in OpenCV DNN, more layer types will be supported and performance tuning is on the way. Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com> * dnn/vulkan: Add FindVulkan.cmake to detect Vulkan SDK In order to build dnn with Vulkan support, need installing Vulkan SDK and setting environment variable "VULKAN_SDK" and add "-DWITH_VULKAN=ON" to cmake command. You can download Vulkan SDK from: https://vulkan.lunarg.com/sdk/home#linux For how to install, see https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html respectively for linux, windows and mac. To run the vulkan backend, also need installing mesa driver. On Ubuntu, use this command 'sudo apt-get install mesa-vulkan-drivers' To test, use command '$BUILD_DIR/bin/opencv_test_dnn --gtest_filter=*VkCom*' Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com> * dnn/Vulkan: dynamically load Vulkan runtime No compile-time dependency on Vulkan library. If Vulkan runtime is unavailable, fallback to CPU path. Use environment "OPENCL_VULKAN_RUNTIME" to specify path to your own vulkan runtime library. Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com> * dnn/Vulkan: Add a python script to compile GLSL shaders to SPIR-V shaders The SPIR-V shaders are in format of text-based 32-bit hexadecimal numbers, and inserted into .cpp files as unsigned int32 array. * dnn/Vulkan: Put Vulkan headers into 3rdparty directory and some other fixes Vulkan header files are copied from https://github.com/KhronosGroup/Vulkan-Docs/tree/master/include/vulkan to 3rdparty/include Fix the Copyright declaration issue. Refine OpenCVDetectVulkan.cmake * dnn/Vulkan: Add vulkan backend tests into existing ones. Also fixed some test failures. - Don't use bool variable as uniform for shader - Fix dispathed group number beyond max issue - Bypass "group > 1" convolution. This should be support in future. * dnn/Vulkan: Fix multiple initialization in one thread.
255 lines
5.3 KiB
C
255 lines
5.3 KiB
C
#ifndef OPENCV_CVCONFIG_H_INCLUDED
|
|
#define OPENCV_CVCONFIG_H_INCLUDED
|
|
|
|
/* OpenCV compiled as static or dynamic libs */
|
|
#cmakedefine BUILD_SHARED_LIBS
|
|
|
|
/* OpenCV intrinsics optimized code */
|
|
#cmakedefine CV_ENABLE_INTRINSICS
|
|
|
|
/* OpenCV additional optimized code */
|
|
#cmakedefine CV_DISABLE_OPTIMIZATION
|
|
|
|
/* Compile for 'real' NVIDIA GPU architectures */
|
|
#define CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN}"
|
|
|
|
/* Create PTX or BIN for 1.0 compute capability */
|
|
#cmakedefine CUDA_ARCH_BIN_OR_PTX_10
|
|
|
|
/* NVIDIA GPU features are used */
|
|
#define CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES}"
|
|
|
|
/* Compile for 'virtual' NVIDIA PTX architectures */
|
|
#define CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX}"
|
|
|
|
/* AVFoundation video libraries */
|
|
#cmakedefine HAVE_AVFOUNDATION
|
|
|
|
/* V4L capturing support */
|
|
#cmakedefine HAVE_CAMV4L
|
|
|
|
/* V4L2 capturing support */
|
|
#cmakedefine HAVE_CAMV4L2
|
|
|
|
/* Carbon windowing environment */
|
|
#cmakedefine HAVE_CARBON
|
|
|
|
/* AMD's Basic Linear Algebra Subprograms Library*/
|
|
#cmakedefine HAVE_CLAMDBLAS
|
|
|
|
/* AMD's OpenCL Fast Fourier Transform Library*/
|
|
#cmakedefine HAVE_CLAMDFFT
|
|
|
|
/* Clp support */
|
|
#cmakedefine HAVE_CLP
|
|
|
|
/* Cocoa API */
|
|
#cmakedefine HAVE_COCOA
|
|
|
|
/* NVIDIA CUDA Basic Linear Algebra Subprograms (BLAS) API*/
|
|
#cmakedefine HAVE_CUBLAS
|
|
|
|
/* NVIDIA CUDA Runtime API*/
|
|
#cmakedefine HAVE_CUDA
|
|
|
|
/* NVIDIA CUDA Fast Fourier Transform (FFT) API*/
|
|
#cmakedefine HAVE_CUFFT
|
|
|
|
/* IEEE1394 capturing support */
|
|
#cmakedefine HAVE_DC1394
|
|
|
|
/* IEEE1394 capturing support - libdc1394 v2.x */
|
|
#cmakedefine HAVE_DC1394_2
|
|
|
|
/* DirectX */
|
|
#cmakedefine HAVE_DIRECTX
|
|
#cmakedefine HAVE_DIRECTX_NV12
|
|
#cmakedefine HAVE_D3D11
|
|
#cmakedefine HAVE_D3D10
|
|
#cmakedefine HAVE_D3D9
|
|
|
|
/* DirectShow Video Capture library */
|
|
#cmakedefine HAVE_DSHOW
|
|
|
|
/* Eigen Matrix & Linear Algebra Library */
|
|
#cmakedefine HAVE_EIGEN
|
|
|
|
/* FFMpeg video library */
|
|
#cmakedefine HAVE_FFMPEG
|
|
|
|
/* Geospatial Data Abstraction Library */
|
|
#cmakedefine HAVE_GDAL
|
|
|
|
/* GStreamer multimedia framework */
|
|
#cmakedefine HAVE_GSTREAMER
|
|
|
|
/* GTK+ 2.0 Thread support */
|
|
#cmakedefine HAVE_GTHREAD
|
|
|
|
/* GTK+ 2.x toolkit */
|
|
#cmakedefine HAVE_GTK
|
|
|
|
/* Halide support */
|
|
#cmakedefine HAVE_HALIDE
|
|
|
|
/* Vulkan support */
|
|
#cmakedefine HAVE_VULKAN
|
|
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
#cmakedefine HAVE_INTTYPES_H 1
|
|
|
|
/* Intel Perceptual Computing SDK library */
|
|
#cmakedefine HAVE_INTELPERC
|
|
|
|
/* Intel Integrated Performance Primitives */
|
|
#cmakedefine HAVE_IPP
|
|
#cmakedefine HAVE_IPP_ICV
|
|
#cmakedefine HAVE_IPP_IW
|
|
#cmakedefine HAVE_IPP_IW_LL
|
|
|
|
/* JPEG-2000 codec */
|
|
#cmakedefine HAVE_JASPER
|
|
|
|
/* IJG JPEG codec */
|
|
#cmakedefine HAVE_JPEG
|
|
|
|
/* libpng/png.h needs to be included */
|
|
#cmakedefine HAVE_LIBPNG_PNG_H
|
|
|
|
/* GDCM DICOM codec */
|
|
#cmakedefine HAVE_GDCM
|
|
|
|
/* V4L/V4L2 capturing support via libv4l */
|
|
#cmakedefine HAVE_LIBV4L
|
|
|
|
/* Microsoft Media Foundation Capture library */
|
|
#cmakedefine HAVE_MSMF
|
|
|
|
/* NVIDIA Video Decoding API*/
|
|
#cmakedefine HAVE_NVCUVID
|
|
|
|
/* NVIDIA Video Encoding API*/
|
|
#cmakedefine HAVE_NVCUVENC
|
|
|
|
/* OpenCL Support */
|
|
#cmakedefine HAVE_OPENCL
|
|
#cmakedefine HAVE_OPENCL_STATIC
|
|
#cmakedefine HAVE_OPENCL_SVM
|
|
|
|
/* OpenEXR codec */
|
|
#cmakedefine HAVE_OPENEXR
|
|
|
|
/* OpenGL support*/
|
|
#cmakedefine HAVE_OPENGL
|
|
|
|
/* OpenNI library */
|
|
#cmakedefine HAVE_OPENNI
|
|
|
|
/* OpenNI library */
|
|
#cmakedefine HAVE_OPENNI2
|
|
|
|
/* librealsense library */
|
|
#cmakedefine HAVE_LIBREALSENSE
|
|
|
|
/* PNG codec */
|
|
#cmakedefine HAVE_PNG
|
|
|
|
/* Posix threads (pthreads) */
|
|
#cmakedefine HAVE_PTHREAD
|
|
|
|
/* parallel_for with pthreads */
|
|
#cmakedefine HAVE_PTHREADS_PF
|
|
|
|
/* Qt support */
|
|
#cmakedefine HAVE_QT
|
|
|
|
/* Qt OpenGL support */
|
|
#cmakedefine HAVE_QT_OPENGL
|
|
|
|
/* QuickTime video libraries */
|
|
#cmakedefine HAVE_QUICKTIME
|
|
|
|
/* QTKit video libraries */
|
|
#cmakedefine HAVE_QTKIT
|
|
|
|
/* Intel Threading Building Blocks */
|
|
#cmakedefine HAVE_TBB
|
|
|
|
/* Ste||ar Group High Performance ParallelX */
|
|
#cmakedefine HAVE_HPX
|
|
|
|
/* TIFF codec */
|
|
#cmakedefine HAVE_TIFF
|
|
|
|
/* Unicap video capture library */
|
|
#cmakedefine HAVE_UNICAP
|
|
|
|
/* Video for Windows support */
|
|
#cmakedefine HAVE_VFW
|
|
|
|
/* V4L2 capturing support in videoio.h */
|
|
#cmakedefine HAVE_VIDEOIO
|
|
|
|
/* Win32 UI */
|
|
#cmakedefine HAVE_WIN32UI
|
|
|
|
/* XIMEA camera support */
|
|
#cmakedefine HAVE_XIMEA
|
|
|
|
/* Xine video library */
|
|
#cmakedefine HAVE_XINE
|
|
|
|
/* Define if your processor stores words with the most significant byte
|
|
first (like Motorola and SPARC, unlike Intel and VAX). */
|
|
#cmakedefine WORDS_BIGENDIAN
|
|
|
|
/* gPhoto2 library */
|
|
#cmakedefine HAVE_GPHOTO2
|
|
|
|
/* VA library (libva) */
|
|
#cmakedefine HAVE_VA
|
|
|
|
/* Intel VA-API/OpenCL */
|
|
#cmakedefine HAVE_VA_INTEL
|
|
|
|
/* Intel Media SDK */
|
|
#cmakedefine HAVE_MFX
|
|
|
|
/* Lapack */
|
|
#cmakedefine HAVE_LAPACK
|
|
|
|
/* Library was compiled with functions instrumentation */
|
|
#cmakedefine ENABLE_INSTRUMENTATION
|
|
|
|
/* OpenVX */
|
|
#cmakedefine HAVE_OPENVX
|
|
|
|
#if defined(HAVE_XINE) || \
|
|
defined(HAVE_GSTREAMER) || \
|
|
defined(HAVE_QUICKTIME) || \
|
|
defined(HAVE_QTKIT) || \
|
|
defined(HAVE_AVFOUNDATION) || \
|
|
/*defined(HAVE_OPENNI) || too specialized */ \
|
|
defined(HAVE_FFMPEG) || \
|
|
defined(HAVE_MSMF)
|
|
#define HAVE_VIDEO_INPUT
|
|
#endif
|
|
|
|
#if /*defined(HAVE_XINE) || */\
|
|
defined(HAVE_GSTREAMER) || \
|
|
defined(HAVE_QUICKTIME) || \
|
|
defined(HAVE_QTKIT) || \
|
|
defined(HAVE_AVFOUNDATION) || \
|
|
defined(HAVE_FFMPEG) || \
|
|
defined(HAVE_MSMF)
|
|
#define HAVE_VIDEO_OUTPUT
|
|
#endif
|
|
|
|
/* OpenCV trace utilities */
|
|
#cmakedefine OPENCV_TRACE
|
|
|
|
/* Library QR-code decoding */
|
|
#cmakedefine HAVE_QUIRC
|
|
|
|
#endif // OPENCV_CVCONFIG_H_INCLUDED
|