rzzn
This commit is contained in:
		
							parent
							
								
									016a2c7aa5
								
							
						
					
					
						commit
						835e4c3b45
					
				
							
								
								
									
										156
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | |||||||
|  | cmake_minimum_required(VERSION 3.8) | ||||||
|  | 
 | ||||||
|  | project(rknn_yolo_demo_linux) | ||||||
|  | set(CMAKE_CXX_STANDARD 11) | ||||||
|  | add_definitions(-g -O0 -ggdb -gdwarf -funwind-tables -rdynamic) | ||||||
|  | add_definitions(-Wno-write-strings -Wno-return-type) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | set(TOOLCHAIN_DIR /opt/atk-dlrv1126-toolchain) | ||||||
|  | set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/usr/bin/arm-linux-gnueabihf-g++) | ||||||
|  | set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/usr/bin/arm-linux-gnueabihf-gcc) | ||||||
|  | set(SYSROOT ${TOOLCHAIN_DIR}/arm-buildroot-linux-gnueabihf/sysroot/usr/include) | ||||||
|  | set(CMAKE_SYSROOT ${TOOLCHAIN_DIR}/arm-buildroot-linux-gnueabihf/sysroot) | ||||||
|  | 
 | ||||||
|  | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") | ||||||
|  | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread") | ||||||
|  | 
 | ||||||
|  | # for linux | ||||||
|  | if (CMAKE_C_COMPILER MATCHES "aarch64") | ||||||
|  |   set(LIB_ARCH lib64) | ||||||
|  | else() | ||||||
|  |   set(LIB_ARCH lib) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # # for android | ||||||
|  | # if (${TARGET_SOC} STREQUAL "RK3399PRO") | ||||||
|  | #   set(LIB_ARCH lib64) | ||||||
|  | # endif() | ||||||
|  | 
 | ||||||
|  | # rga | ||||||
|  | set(RGA_DIR ${MZ_ROOT}/libs/rklibs/rknpu-1.7.3/rknn/rknn_api/examples/3rdparty/rga) | ||||||
|  | include_directories(${RGA_DIR}/include) | ||||||
|  | 
 | ||||||
|  | # drm | ||||||
|  | set(DRM_DIR ${MZ_ROOT}/libs/common/drm) | ||||||
|  | include_directories(${DRM_DIR}/include) | ||||||
|  | include_directories(${DRM_DIR}/include/libdrm) | ||||||
|  | 
 | ||||||
|  | #stb | ||||||
|  | set(STB_DIR ${MZ_ROOT}/libs/common/) | ||||||
|  | include_directories(${STB_DIR}) | ||||||
|  | 
 | ||||||
|  | # rknn api | ||||||
|  | if (${TARGET_SOC} STREQUAL "RK3399PRO") | ||||||
|  |   set(RKNN_API_PATH ${MZ_ROOT}/libs/rklibs/RK3399Pro_npu/rknn-api/librknn_api) | ||||||
|  |   include_directories(${RKNN_API_PATH}/include) | ||||||
|  |   set(RKNN_API_LIB ${RKNN_API_PATH}/${CMAKE_SYSTEM_NAME}/${LIB_ARCH}/librknn_api.so) | ||||||
|  | else() | ||||||
|  |   set(RKNN_API_PATH ${MZ_ROOT}/libs/rklibs/rknpu-1.7.3/rknn/rknn_api/librknn_api) | ||||||
|  |   include_directories(${RKNN_API_PATH}/include) | ||||||
|  |   set(RKNN_API_LIB ${RKNN_API_PATH}/${LIB_ARCH}/librknn_api.so) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # libjpeg | ||||||
|  | set(LIBJPEG_DIR ${MZ_ROOT}/libs/platform/${TARGET_SOC}/libjpeg) | ||||||
|  | include_directories(${LIBJPEG_DIR}/include) | ||||||
|  | set(LIBJPEG_LIB ${LIBJPEG_DIR}/lib/${CMAKE_SYSTEM_NAME}/libjpeg.a) | ||||||
|  | 
 | ||||||
|  | # libpng | ||||||
|  | set(LIBPNG_DIR ${MZ_ROOT}/libs/platform/${TARGET_SOC}/libpng) | ||||||
|  | include_directories(${LIBPNG_DIR}/include) | ||||||
|  | set(LIBPNG_LIB ${LIBPNG_DIR}/lib/${CMAKE_SYSTEM_NAME}/libpng.a) | ||||||
|  | 
 | ||||||
|  | # zlib(used by libpng) | ||||||
|  | set(ZLIB_DIR ${MZ_ROOT}/libs/platform/${TARGET_SOC}/zlib) | ||||||
|  | include_directories(${ZLIB_DIR}/include) | ||||||
|  | set(ZLIB_LIB ${ZLIB_DIR}/lib/${CMAKE_SYSTEM_NAME}/libz.a) | ||||||
|  | 
 | ||||||
|  | # #curl | ||||||
|  | include_directories(${CMAKE_SOURCE_DIR}/include) | ||||||
|  | # set(CURL_LIB /opt/atk-dlrv1126-toolchain/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libcurl.so) | ||||||
|  | 
 | ||||||
|  | set(libs | ||||||
|  |                     jes_bas | ||||||
|  | 					jes_upgrade | ||||||
|  |                     jes_user | ||||||
|  |                     jes_network | ||||||
|  |                     jes_mss | ||||||
|  | 					jes_isp | ||||||
|  |                     jes_mcs | ||||||
|  |                     jes_spk | ||||||
|  |                     jes_record | ||||||
|  |                     jes_recsnap | ||||||
|  |                     jes_replay | ||||||
|  |                     jes_storage | ||||||
|  | 					jlinux | ||||||
|  |                     jbus | ||||||
|  | 					jbuffer | ||||||
|  |                     dbus-1 | ||||||
|  |                     jvbase | ||||||
|  |                     arch | ||||||
|  |                     utility | ||||||
|  |                     cjson | ||||||
|  |                     ${LIBINTL}) | ||||||
|  | 
 | ||||||
|  | link_directories(/opt/atk-dlrv1126-toolchain/arm-buildroot-linux-gnueabihf/sysroot/usr/lib) | ||||||
|  | find_package(CURL REQUIRED)	 | ||||||
|  | include_directories(${CURL_INCLUDE_DIR}) | ||||||
|  | message("CURL_LIBRARIES: ${CURL_LIBRARIES}") | ||||||
|  | message("CURL_INCLUDE_DIR: ${CURL_INCLUDE_DIR}") | ||||||
|  | find_package(OpenCV REQUIRED) | ||||||
|  | find_package(OpenSSL REQUIRED) | ||||||
|  | 
 | ||||||
|  | set(OPENCV_LIBS opencv_core opencv_imgcodecs opencv_imgproc opencv_features2d opencv_flann opencv_highgui opencv_freetype) | ||||||
|  | set(RKNN_LIBS easymedia rga rkaiq  sample_common_isp) | ||||||
|  | 
 | ||||||
|  | link_directories(include lib) | ||||||
|  | link_directories(include ./include/librtsp) | ||||||
|  | link_directories(/home/developer/sysroot/usr/lib) | ||||||
|  | link_directories(/home/developer/sysroot/lib) | ||||||
|  | 
 | ||||||
|  | include_directories(/home/developer/sysroot/usr/include/) | ||||||
|  | include_directories(${SYSROOT}) | ||||||
|  | include_directories(${SYSROOT}/rga) | ||||||
|  | include_directories(${SYSROOT}/easymedia) | ||||||
|  | include_directories(${SYSROOT}/rkaiq/uAPI) | ||||||
|  | include_directories(${SYSROOT}/rkaiq/xcore) | ||||||
|  | include_directories(${SYSROOT}/rkaiq/algos) | ||||||
|  | include_directories(${SYSROOT}/rkaiq/common) | ||||||
|  | include_directories(${SYSROOT}/rkaiq/iq_parser) | ||||||
|  | include_directories(./include/librtsp) | ||||||
|  | include_directories(./include/nlohmann) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | set(CMAKE_INSTALL_RPATH "lib") | ||||||
|  | 
 | ||||||
|  | add_executable(yolov5-JES | ||||||
|  |         src/drm_func.c | ||||||
|  |         src/rga_func.c | ||||||
|  |         src/main.cpp | ||||||
|  |         src/yolov5_detect_postprocess.cpp | ||||||
|  |         src/yolov5_detect.cpp | ||||||
|  |         ) | ||||||
|  | 
 | ||||||
|  | target_link_libraries(yolov5-JES | ||||||
|  | 	${RKNN_API_LIB} | ||||||
|  |   ${LIBJPEG_LIB} | ||||||
|  |   ${LIBPNG_LIB} | ||||||
|  |   ${ZLIB_LIB} | ||||||
|  |   ${OPENCV_LIBS} | ||||||
|  |   ${CURL_LIBRARIES} | ||||||
|  |   librtsp.a | ||||||
|  |   ${RKNN_LIBS} | ||||||
|  |   dl | ||||||
|  |   ${libs} | ||||||
|  |   OpenSSL::Crypto | ||||||
|  |   OpenSSL::SSL | ||||||
|  | ) | ||||||
|  | add_definitions(-DRKAIQ) | ||||||
|  | # install target and libraries | ||||||
|  | set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/yolov5-JES) | ||||||
|  | install(TARGETS yolov5-JES DESTINATION ./) | ||||||
|  | install(PROGRAMS ${RKNN_API_LIB} DESTINATION lib ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										64
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | |||||||
|  | # rknn_yolo_EAI_pic | ||||||
|  | #### 简要说明 | ||||||
|  | 
 | ||||||
|  | 用于跑EAI提供仓库训练出来的yolov5模型的视频检测例程。 | ||||||
|  | 集成了从串口读取红外温度数据,到达阈值后报警并运行rknn模型 | ||||||
|  | 
 | ||||||
|  | 需注意运行该例程需要将npu驱动更新为1.7.3版本 | ||||||
|  |   | ||||||
|  | 本项目只适用于EAI-YOLOV5 | ||||||
|  | 详情请参考EAI官网:https://www.easy-eai.com/document_details/3/342 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## 准备工作 | ||||||
|  | 根据EAI给出的教程训练、转化得到rknn模型 | ||||||
|  | 有两类检测模型:火焰检测和烟雾检测 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## 安装(install) | ||||||
|  | 
 | ||||||
|  | 通过adb连接设备并将编译结果推送至板端,执行以下命令推送,这里板端默认使用/userdata路径 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | adb push install/rknn_yolo_demo /userdata/ | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 将前面准备好的RKNN模型推送至板端,这里假设模型名字为 yolov5s_u8.rknn | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | adb push ./yolov5s_u8.rknn /userdata/rknn_yolo_demo/model/yolov5s_u8.rknn | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## 单图测试执行 | ||||||
|  | 详情请了解官网:9.模型部署实例 | ||||||
|  | 
 | ||||||
|  | 进入EAI环境之后编译,将编译文件放置到可执行程序,假设是first_yolov5_detect_demo | ||||||
|  | 用下列命令将可执行程序推送到开发板端 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | cp first_yolov5_detect_demo/ /mnt/userdata/ -rf | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 进入办卡运行环境 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | adb shell | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 定位到指定位置后,运行程序 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | ./rknn_yolo_EAI | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## 编译(build) | ||||||
|  | 
 | ||||||
|  | 在项目文件中,根据设备,调整 GCC_COMPILER 参数,终端执行下面命令进行编译 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | ./build.sh | ||||||
|  | ``` | ||||||
							
								
								
									
										47
									
								
								build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								build.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | rm build -rf | ||||||
|  | mkdir build | ||||||
|  | 
 | ||||||
|  | RV1109_TOOL_CHAIN="/opt/atk-dlrv1126-toolchain" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # for rv1109/rv1126 armhf | ||||||
|  | GCC_COMPILER=${RV1109_TOOL_CHAIN}/usr/bin/arm-linux-gnueabihf | ||||||
|  | 
 | ||||||
|  | ROOT_PWD=$( cd "$( dirname $0 )" && cd -P "$( dirname "$SOURCE" )" && pwd ) | ||||||
|  | 
 | ||||||
|  | # model_zoo_path root path | ||||||
|  | MZ_ROOT=$(pwd | sed 's/\(rknn_model_zoo-main\).*/\1/g') | ||||||
|  | echo "MZ_ROOT:" | ||||||
|  | echo $MZ_ROOT | ||||||
|  | # build rockx | ||||||
|  | BUILD_DIR=${ROOT_PWD}/build | ||||||
|  | 
 | ||||||
|  | if [[ ! -d "${BUILD_DIR}" ]]; then | ||||||
|  |   mkdir -p ${BUILD_DIR} | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | cd ${BUILD_DIR} | ||||||
|  | cmake .. \ | ||||||
|  |     -DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \ | ||||||
|  |     -DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++ \ | ||||||
|  |     -DMZ_ROOT=${MZ_ROOT} \ | ||||||
|  |     -DTARGET_SOC=RV1109_1126 \ | ||||||
|  |     -DCMAKE_SYSTEM_NAME=Linux | ||||||
|  | make -j4 | ||||||
|  | make install | ||||||
|  | cd .. | ||||||
|  | 
 | ||||||
|  | cd ${BUILD_DIR} | ||||||
|  | cmake .. \ | ||||||
|  |     -DCMAKE_C_COMPILER=${GCC_COMPILER}-gcc \ | ||||||
|  |     -DCMAKE_CXX_COMPILER=${GCC_COMPILER}-g++ \ | ||||||
|  |     -DMZ_ROOT=${MZ_ROOT} \ | ||||||
|  |     -DTARGET_SOC=RV1109_1126 \ | ||||||
|  |     -DCMAKE_SYSTEM_NAME=Linux | ||||||
|  | make -j4 | ||||||
|  | make install | ||||||
|  | 
 | ||||||
							
								
								
									
										39
									
								
								include/drm_func.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								include/drm_func.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | #ifndef __DRM_FUNC_H__ | ||||||
|  | #define __DRM_FUNC_H__ | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <sys/fcntl.h>// open function | ||||||
|  | #include <unistd.h> // close function | ||||||
|  | #include <errno.h> | ||||||
|  | #include <sys/mman.h> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include <linux/input.h> | ||||||
|  | #include "libdrm/drm_fourcc.h" | ||||||
|  | #include "xf86drm.h" | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | typedef int (* FUNC_DRM_IOCTL)(int fd, unsigned long request, void *arg); | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_context{ | ||||||
|  |     void *drm_handle; | ||||||
|  |     FUNC_DRM_IOCTL io_func; | ||||||
|  | } drm_context; | ||||||
|  | 
 | ||||||
|  | int drm_init(drm_context *drm_ctx); | ||||||
|  | 
 | ||||||
|  | void* drm_buf_alloc(drm_context *drm_ctx,int drm_fd, int TexWidth, int TexHeight,int bpp,int *fd,unsigned int *handle,size_t *actual_size); | ||||||
|  | 
 | ||||||
|  | int drm_buf_destroy(drm_context *drm_ctx,int drm_fd,int buf_fd, int handle,void *drm_buf,size_t size); | ||||||
|  | 
 | ||||||
|  | void drm_deinit(drm_context *drm_ctx, int drm_fd); | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | #endif /*__DRM_FUNC_H__*/ | ||||||
							
								
								
									
										5258
									
								
								include/json.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5258
									
								
								include/json.hpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										34
									
								
								include/rga_func.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								include/rga_func.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | #ifndef __RGA_FUNC_H__ | ||||||
|  | #define __RGA_FUNC_H__ | ||||||
|  | 
 | ||||||
|  | #include <dlfcn.h>  | ||||||
|  | #include "RgaApi.h" | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | typedef int(* FUNC_RGA_INIT)(); | ||||||
|  | typedef void(* FUNC_RGA_DEINIT)(); | ||||||
|  | typedef int(* FUNC_RGA_BLIT)(rga_info_t *, rga_info_t *, rga_info_t *); | ||||||
|  | 
 | ||||||
|  | typedef struct _rga_context{ | ||||||
|  |     void *rga_handle; | ||||||
|  |     FUNC_RGA_INIT init_func; | ||||||
|  |     FUNC_RGA_DEINIT deinit_func; | ||||||
|  |     FUNC_RGA_BLIT blit_func; | ||||||
|  | } rga_context; | ||||||
|  | 
 | ||||||
|  | int RGA_init(rga_context* rga_ctx); | ||||||
|  | 
 | ||||||
|  | void img_resize_fast(rga_context *rga_ctx, int src_fd, int src_w, int src_h, uint64_t dst_phys, int dst_w, int dst_h); | ||||||
|  | 
 | ||||||
|  | void img_resize_slow(rga_context *rga_ctx, void *src_virt, int src_w, int src_h, void *dst_virt, int dst_w, int dst_h, int w_offset,  | ||||||
|  |                     int h_offset, RgaSURF_FORMAT color, bool add_extra_sz_w, bool add_extra_sz_h); | ||||||
|  | 
 | ||||||
|  | int RGA_deinit(rga_context* rga_ctx); | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | #endif/*__RGA_FUNC_H__*/ | ||||||
							
								
								
									
										47
									
								
								include/yolov5_detect.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								include/yolov5_detect.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | #ifndef _YOLOV5_DETECT_H_ | ||||||
|  | #define _YOLOV5_DETECT_H_ | ||||||
|  | 
 | ||||||
|  | #include "yolov5_detect_postprocess.h" | ||||||
|  | #include "rknn_api.h" | ||||||
|  | #include <opencv2/opencv.hpp> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 标准库中的base64编码器
 | ||||||
|  | static const std::string base64_chars = | ||||||
|  |              "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | ||||||
|  |              "abcdefghijklmnopqrstuvwxyz" | ||||||
|  |              "0123456789+/"; | ||||||
|  | 
 | ||||||
|  | std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len); | ||||||
|  | 
 | ||||||
|  | static inline bool is_base64(unsigned char c) ; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* 
 | ||||||
|  |  * yolov5检测初始化函数 | ||||||
|  |  * ctx:输入参数,rknn_context句柄 | ||||||
|  |  * path:输入参数,算法模型路径 | ||||||
|  |  */ | ||||||
|  | int yolov5_detect_init(rknn_context *ctx, const char * path); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* 
 | ||||||
|  |  * yolov5检测执行函数 | ||||||
|  |  * ctx:输入参数,rknn_context句柄 | ||||||
|  |  * input_image:输入参数,图像数据输入(cv::Mat是Opencv的类型) | ||||||
|  |  * output_dets:输出参数,目标检测框输出 | ||||||
|  |  */ | ||||||
|  | int yolov5_detect_run(rknn_context ctx, cv::Mat input_image, yolov5_detect_result_group_t *detect_result_group); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* 
 | ||||||
|  |  * yolov5检测释放函数 | ||||||
|  |  * ctx:输入参数,rknn_context句柄 | ||||||
|  |  */ | ||||||
|  | int yolov5_detect_release(rknn_context ctx); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										43
									
								
								include/yolov5_detect_postprocess.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								include/yolov5_detect_postprocess.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | #ifndef _YOLOV5_DETECT_POSTPROCESS_H_ | ||||||
|  | #define _YOLOV5_DETECT_POSTPROCESS_H_ | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | #define YOLOV5_NAME_MAX_SIZE 16 | ||||||
|  | #define YOLOV5_NUMB_MAX_SIZE 200 | ||||||
|  | #define YOLOV5_CLASS_NUM     2 | ||||||
|  | #define YOLOV5_PROP_BOX_SIZE     (5+YOLOV5_CLASS_NUM) | ||||||
|  | 
 | ||||||
|  | typedef struct | ||||||
|  | { | ||||||
|  |     int left; | ||||||
|  |     int right; | ||||||
|  |     int top; | ||||||
|  |     int bottom; | ||||||
|  | } YOLOV5_BOX_RECT; | ||||||
|  | 
 | ||||||
|  | typedef struct | ||||||
|  | { | ||||||
|  |     char name[YOLOV5_NAME_MAX_SIZE]; | ||||||
|  |     int class_index; | ||||||
|  |     YOLOV5_BOX_RECT box; | ||||||
|  |     float prop; | ||||||
|  | } yolov5_detect_result_t; | ||||||
|  | 
 | ||||||
|  | typedef struct | ||||||
|  | { | ||||||
|  |     int id; | ||||||
|  |     int count; | ||||||
|  |     yolov5_detect_result_t results[YOLOV5_NUMB_MAX_SIZE]; | ||||||
|  | } yolov5_detect_result_group_t; | ||||||
|  | 
 | ||||||
|  | int yolov5_post_process_u8(uint8_t *input0, uint8_t *input1, uint8_t *input2, int model_in_h, int model_in_w, | ||||||
|  |                  float conf_threshold, float nms_threshold, | ||||||
|  |                  std::vector<uint8_t> &qnt_zps, std::vector<float> &qnt_scales, | ||||||
|  |                  yolov5_detect_result_group_t *group); | ||||||
|  | 
 | ||||||
|  | int yolov5_post_process_fp(float *input0, float *input1, float *input2, int model_in_h, int model_in_w, | ||||||
|  |                  float conf_threshold, float nms_threshold,  | ||||||
|  |                  yolov5_detect_result_group_t *group); | ||||||
|  | 
 | ||||||
|  | #endif //_RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_
 | ||||||
							
								
								
									
										
											BIN
										
									
								
								install/yolov5-JES/lib/librknn_api.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								install/yolov5-JES/lib/librknn_api.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								install/yolov5-JES/yolov5-JES
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								install/yolov5-JES/yolov5-JES
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/libeasymedia.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/libeasymedia.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/libeasymedia.so.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/libeasymedia.so.1
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/libeasymedia.so.1.0.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/libeasymedia.so.1.0.1
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										38
									
								
								libs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								libs/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | |||||||
|  | # Libs 说明 | ||||||
|  | 
 | ||||||
|  | libs 文件夹存放 C demo 编译时依赖的库,目前分为以下子文件夹 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## common | ||||||
|  | 
 | ||||||
|  | 存放无需区分使用平台的依赖库 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## platform | ||||||
|  | 
 | ||||||
|  | 存放需区分使用平台的依赖库 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## rklibs | ||||||
|  | 
 | ||||||
|  | 存放 Rockchip 维护的依赖库,编译任意 C demo 前需执行以下指令进行初始化 | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | cd rklibs | ||||||
|  | 
 | ||||||
|  | # RK1808/RV1126/RV1109 NPU 依赖库 | ||||||
|  | git clone https://github.com/rockchip-linux/rknpu | ||||||
|  | 
 | ||||||
|  | # RK3399pro NPU 依赖库 | ||||||
|  | git clone https://github.com/airockchip/RK3399Pro_npu | ||||||
|  | 
 | ||||||
|  | # RK3566/RK3568/RK3588/RV1106/RV1103 NPU 依赖库 | ||||||
|  | git clone https://github.com/rockchip-linux/rknpu2 | ||||||
|  | 
 | ||||||
|  | # RGA调用依赖库,不区分硬件平台 | ||||||
|  | git clone https://github.com/airockchip/librga | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
							
								
								
									
										8
									
								
								libs/README_EN.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								libs/README_EN.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | ## Libs | ||||||
|  | 
 | ||||||
|  | Collection of the libs used for RKNN_C_demo  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										65138
									
								
								libs/common/CImg/CImg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65138
									
								
								libs/common/CImg/CImg.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										401
									
								
								libs/common/cnpy/cnpy.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										401
									
								
								libs/common/cnpy/cnpy.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,401 @@ | |||||||
|  | // Copyright (C) 2011  Carl Rogers
 | ||||||
|  | // Released under MIT License
 | ||||||
|  | // license available in LICENSE file, or at http://www.opensource.org/licenses/mit-license.php
 | ||||||
|  | 
 | ||||||
|  | #include "cnpy.h" | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | #include <algorithm> | ||||||
|  | #include <complex> | ||||||
|  | #include <cstdlib> | ||||||
|  | #include <cstring> | ||||||
|  | #include <iomanip> | ||||||
|  | #include <regex> | ||||||
|  | #include <stdexcept> | ||||||
|  | 
 | ||||||
|  | char cnpy::BigEndianTest(int size) | ||||||
|  | { | ||||||
|  |   if (size == 1) | ||||||
|  |     return '|'; | ||||||
|  |   int x = 1; | ||||||
|  |   return (((char*)&x)[0]) ? '<' : '>'; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | char cnpy::map_type(const std::type_info& t) | ||||||
|  | { | ||||||
|  |   if (t == typeid(float)) | ||||||
|  |     return 'f'; | ||||||
|  |   if (t == typeid(double)) | ||||||
|  |     return 'f'; | ||||||
|  |   if (t == typeid(long double)) | ||||||
|  |     return 'f'; | ||||||
|  | 
 | ||||||
|  |   if (t == typeid(int)) | ||||||
|  |     return 'i'; | ||||||
|  |   if (t == typeid(char)) | ||||||
|  |     return 'i'; | ||||||
|  |   if (t == typeid(signed char)) | ||||||
|  |     return 'i'; | ||||||
|  |   if (t == typeid(short)) | ||||||
|  |     return 'i'; | ||||||
|  |   if (t == typeid(long)) | ||||||
|  |     return 'i'; | ||||||
|  |   if (t == typeid(long long)) | ||||||
|  |     return 'i'; | ||||||
|  | 
 | ||||||
|  |   if (t == typeid(unsigned char)) | ||||||
|  |     return 'u'; | ||||||
|  |   if (t == typeid(unsigned short)) | ||||||
|  |     return 'u'; | ||||||
|  |   if (t == typeid(unsigned long)) | ||||||
|  |     return 'u'; | ||||||
|  |   if (t == typeid(unsigned long long)) | ||||||
|  |     return 'u'; | ||||||
|  |   if (t == typeid(unsigned int)) | ||||||
|  |     return 'u'; | ||||||
|  | 
 | ||||||
|  |   if (t == typeid(bool)) | ||||||
|  |     return 'b'; | ||||||
|  | 
 | ||||||
|  |   if (t == typeid(std::complex<float>)) | ||||||
|  |     return 'c'; | ||||||
|  |   if (t == typeid(std::complex<double>)) | ||||||
|  |     return 'c'; | ||||||
|  |   if (t == typeid(std::complex<long double>)) | ||||||
|  |     return 'c'; | ||||||
|  | 
 | ||||||
|  |   else | ||||||
|  |     return '?'; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <> | ||||||
|  | std::vector<char>& cnpy::operator+=(std::vector<char>& lhs, const std::string rhs) | ||||||
|  | { | ||||||
|  |   lhs.insert(lhs.end(), rhs.begin(), rhs.end()); | ||||||
|  |   return lhs; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <> | ||||||
|  | std::vector<char>& cnpy::operator+=(std::vector<char>& lhs, const char* rhs) | ||||||
|  | { | ||||||
|  |   // write in little endian
 | ||||||
|  |   size_t len = strlen(rhs); | ||||||
|  |   lhs.reserve(len); | ||||||
|  |   for (size_t byte = 0; byte < len; byte++) { | ||||||
|  |     lhs.push_back(rhs[byte]); | ||||||
|  |   } | ||||||
|  |   return lhs; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void cnpy::parse_npy_header(unsigned char* buffer, size_t& word_size, std::vector<size_t>& shape, bool& fortran_order, | ||||||
|  |                             std::string& typeName) | ||||||
|  | { | ||||||
|  |   // std::string magic_string(buffer,6);
 | ||||||
|  |   uint8_t     major_version = *reinterpret_cast<uint8_t*>(buffer + 6); | ||||||
|  |   uint8_t     minor_version = *reinterpret_cast<uint8_t*>(buffer + 7); | ||||||
|  |   uint16_t    header_len    = *reinterpret_cast<uint16_t*>(buffer + 8); | ||||||
|  |   std::string header(reinterpret_cast<char*>(buffer + 9), header_len); | ||||||
|  | 
 | ||||||
|  |   size_t loc1, loc2; | ||||||
|  | 
 | ||||||
|  |   // fortran order
 | ||||||
|  |   loc1          = header.find("fortran_order") + 16; | ||||||
|  |   fortran_order = (header.substr(loc1, 4) == "True" ? true : false); | ||||||
|  |   if (fortran_order) | ||||||
|  |     throw std::runtime_error("npy input file: 'fortran_order' must be false, use: arr2 = np.ascontiguousarray(arr1)"); | ||||||
|  | 
 | ||||||
|  |   // shape
 | ||||||
|  |   loc1 = header.find("("); | ||||||
|  |   loc2 = header.find(")"); | ||||||
|  | 
 | ||||||
|  |   std::regex  num_regex("[0-9][0-9]*"); | ||||||
|  |   std::smatch sm; | ||||||
|  |   shape.clear(); | ||||||
|  | 
 | ||||||
|  |   std::string str_shape = header.substr(loc1 + 1, loc2 - loc1 - 1); | ||||||
|  |   while (std::regex_search(str_shape, sm, num_regex)) { | ||||||
|  |     shape.push_back(std::stoi(sm[0].str())); | ||||||
|  |     str_shape = sm.suffix().str(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // endian, word size, data type
 | ||||||
|  |   // byte order code | stands for not applicable.
 | ||||||
|  |   // not sure when this applies except for byte array
 | ||||||
|  |   loc1              = header.find("descr") + 9; | ||||||
|  |   bool littleEndian = (header[loc1] == '<' || header[loc1] == '|' ? true : false); | ||||||
|  |   assert(littleEndian); | ||||||
|  | 
 | ||||||
|  |   // char type = header[loc1+1];
 | ||||||
|  |   // assert(type == map_type(T));
 | ||||||
|  | 
 | ||||||
|  |   std::string str_ws = header.substr(loc1 + 2); | ||||||
|  |   loc2               = str_ws.find("'"); | ||||||
|  |   word_size          = atoi(str_ws.substr(0, loc2).c_str()); | ||||||
|  |   if (header.substr(loc1 + 1, 1) == "i") { | ||||||
|  |     typeName = "int"; | ||||||
|  |   } else if (header.substr(loc1 + 1, 1) == "u") { | ||||||
|  |     typeName = "uint"; | ||||||
|  |   } else if (header.substr(loc1 + 1, 1) == "f") { | ||||||
|  |     typeName = "float"; | ||||||
|  |   } | ||||||
|  |   typeName = typeName + std::to_string(word_size * 8); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void cnpy::parse_npy_header(FILE* fp, size_t& word_size, std::vector<size_t>& shape, bool& fortran_order, | ||||||
|  |                             std::string& typeName) | ||||||
|  | { | ||||||
|  |   char   buffer[256]; | ||||||
|  |   size_t res = fread(buffer, sizeof(char), 11, fp); | ||||||
|  |   if (res != 11) | ||||||
|  |     throw std::runtime_error("parse_npy_header: failed fread"); | ||||||
|  |   std::string header = fgets(buffer, 256, fp); | ||||||
|  |   assert(header[header.size() - 1] == '\n'); | ||||||
|  | 
 | ||||||
|  |   size_t loc1, loc2; | ||||||
|  | 
 | ||||||
|  |   // fortran order
 | ||||||
|  |   loc1 = header.find("fortran_order"); | ||||||
|  |   if (loc1 == std::string::npos) | ||||||
|  |     throw std::runtime_error("parse_npy_header: failed to find header keyword: 'fortran_order'"); | ||||||
|  |   loc1 += 16; | ||||||
|  |   fortran_order = (header.substr(loc1, 4) == "True" ? true : false); | ||||||
|  |   if (fortran_order) | ||||||
|  |     throw std::runtime_error("npy input file: 'fortran_order' must be false, use: arr2 = np.ascontiguousarray(arr1)"); | ||||||
|  | 
 | ||||||
|  |   // shape
 | ||||||
|  |   loc1 = header.find("("); | ||||||
|  |   loc2 = header.find(")"); | ||||||
|  |   if (loc1 == std::string::npos || loc2 == std::string::npos) | ||||||
|  |     throw std::runtime_error("parse_npy_header: failed to find header keyword: '(' or ')'"); | ||||||
|  | 
 | ||||||
|  |   std::regex  num_regex("[0-9][0-9]*"); | ||||||
|  |   std::smatch sm; | ||||||
|  |   shape.clear(); | ||||||
|  | 
 | ||||||
|  |   std::string str_shape = header.substr(loc1 + 1, loc2 - loc1 - 1); | ||||||
|  |   while (std::regex_search(str_shape, sm, num_regex)) { | ||||||
|  |     shape.push_back(std::stoi(sm[0].str())); | ||||||
|  |     str_shape = sm.suffix().str(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // endian, word size, data type
 | ||||||
|  |   // byte order code | stands for not applicable.
 | ||||||
|  |   // not sure when this applies except for byte array
 | ||||||
|  |   loc1 = header.find("descr"); | ||||||
|  |   if (loc1 == std::string::npos) | ||||||
|  |     throw std::runtime_error("parse_npy_header: failed to find header keyword: 'descr'"); | ||||||
|  |   loc1 += 9; | ||||||
|  |   bool littleEndian = (header[loc1] == '<' || header[loc1] == '|' ? true : false); | ||||||
|  |   assert(littleEndian); | ||||||
|  | 
 | ||||||
|  |   // char type = header[loc1+1];
 | ||||||
|  |   // assert(type == map_type(T));
 | ||||||
|  | 
 | ||||||
|  |   std::string str_ws = header.substr(loc1 + 2); | ||||||
|  |   loc2               = str_ws.find("'"); | ||||||
|  |   word_size          = atoi(str_ws.substr(0, loc2).c_str()); | ||||||
|  |   if (header.substr(loc1 + 1, 1) == "i") { | ||||||
|  |     typeName = "int"; | ||||||
|  |   } else if (header.substr(loc1 + 1, 1) == "u") { | ||||||
|  |     typeName = "uint"; | ||||||
|  |   } else if (header.substr(loc1 + 1, 1) == "f") { | ||||||
|  |     typeName = "float"; | ||||||
|  |   } | ||||||
|  |   typeName = typeName + std::to_string(word_size * 8); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void cnpy::parse_zip_footer(FILE* fp, uint16_t& nrecs, size_t& global_header_size, size_t& global_header_offset) | ||||||
|  | { | ||||||
|  |   std::vector<char> footer(22); | ||||||
|  |   fseek(fp, -22, SEEK_END); | ||||||
|  |   size_t res = fread(&footer[0], sizeof(char), 22, fp); | ||||||
|  |   if (res != 22) | ||||||
|  |     throw std::runtime_error("parse_zip_footer: failed fread"); | ||||||
|  | 
 | ||||||
|  |   uint16_t disk_no, disk_start, nrecs_on_disk, comment_len; | ||||||
|  |   disk_no              = *(uint16_t*)&footer[4]; | ||||||
|  |   disk_start           = *(uint16_t*)&footer[6]; | ||||||
|  |   nrecs_on_disk        = *(uint16_t*)&footer[8]; | ||||||
|  |   nrecs                = *(uint16_t*)&footer[10]; | ||||||
|  |   global_header_size   = *(uint32_t*)&footer[12]; | ||||||
|  |   global_header_offset = *(uint32_t*)&footer[16]; | ||||||
|  |   comment_len          = *(uint16_t*)&footer[20]; | ||||||
|  | 
 | ||||||
|  |   assert(disk_no == 0); | ||||||
|  |   assert(disk_start == 0); | ||||||
|  |   assert(nrecs_on_disk == nrecs); | ||||||
|  |   assert(comment_len == 0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cnpy::NpyArray load_the_npy_file(FILE* fp) | ||||||
|  | { | ||||||
|  |   std::vector<size_t> shape; | ||||||
|  |   size_t              word_size; | ||||||
|  |   std::string         typeName; | ||||||
|  |   bool                fortran_order; | ||||||
|  |   cnpy::parse_npy_header(fp, word_size, shape, fortran_order, typeName); | ||||||
|  | 
 | ||||||
|  |   cnpy::NpyArray arr(shape, word_size, fortran_order, typeName); | ||||||
|  |   size_t         nread = fread(arr.data<char>(), 1, arr.num_bytes(), fp); | ||||||
|  |   if (nread != arr.num_bytes()) | ||||||
|  |     throw std::runtime_error("load_the_npy_file: failed fread"); | ||||||
|  |   return arr; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cnpy::NpyArray load_the_npz_array(FILE* fp, uint32_t compr_bytes, uint32_t uncompr_bytes) | ||||||
|  | { | ||||||
|  |   std::vector<unsigned char> buffer_compr(compr_bytes); | ||||||
|  |   std::vector<unsigned char> buffer_uncompr(uncompr_bytes); | ||||||
|  |   size_t                     nread = fread(&buffer_compr[0], 1, compr_bytes, fp); | ||||||
|  |   if (nread != compr_bytes) | ||||||
|  |     throw std::runtime_error("load_the_npy_file: failed fread"); | ||||||
|  | 
 | ||||||
|  |   int      err; | ||||||
|  |   z_stream d_stream; | ||||||
|  | 
 | ||||||
|  |   d_stream.zalloc   = Z_NULL; | ||||||
|  |   d_stream.zfree    = Z_NULL; | ||||||
|  |   d_stream.opaque   = Z_NULL; | ||||||
|  |   d_stream.avail_in = 0; | ||||||
|  |   d_stream.next_in  = Z_NULL; | ||||||
|  |   err               = inflateInit2(&d_stream, -MAX_WBITS); | ||||||
|  | 
 | ||||||
|  |   d_stream.avail_in  = compr_bytes; | ||||||
|  |   d_stream.next_in   = &buffer_compr[0]; | ||||||
|  |   d_stream.avail_out = uncompr_bytes; | ||||||
|  |   d_stream.next_out  = &buffer_uncompr[0]; | ||||||
|  | 
 | ||||||
|  |   err = inflate(&d_stream, Z_FINISH); | ||||||
|  |   err = inflateEnd(&d_stream); | ||||||
|  | 
 | ||||||
|  |   std::vector<size_t> shape; | ||||||
|  |   size_t              word_size; | ||||||
|  |   bool                fortran_order; | ||||||
|  |   std::string         typeName; | ||||||
|  |   cnpy::parse_npy_header(&buffer_uncompr[0], word_size, shape, fortran_order, typeName); | ||||||
|  | 
 | ||||||
|  |   cnpy::NpyArray array(shape, word_size, fortran_order, typeName); | ||||||
|  | 
 | ||||||
|  |   size_t offset = uncompr_bytes - array.num_bytes(); | ||||||
|  |   memcpy(array.data<unsigned char>(), &buffer_uncompr[0] + offset, array.num_bytes()); | ||||||
|  | 
 | ||||||
|  |   return array; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cnpy::npz_t cnpy::npz_load(std::string fname) | ||||||
|  | { | ||||||
|  |   FILE* fp = fopen(fname.c_str(), "rb"); | ||||||
|  | 
 | ||||||
|  |   if (!fp) { | ||||||
|  |     throw std::runtime_error("npz_load: Error! Unable to open file " + fname + "!"); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   cnpy::npz_t arrays; | ||||||
|  | 
 | ||||||
|  |   while (1) { | ||||||
|  |     std::vector<char> local_header(30); | ||||||
|  |     size_t            headerres = fread(&local_header[0], sizeof(char), 30, fp); | ||||||
|  |     if (headerres != 30) | ||||||
|  |       throw std::runtime_error("npz_load: failed fread"); | ||||||
|  | 
 | ||||||
|  |     // if we've reached the global header, stop reading
 | ||||||
|  |     if (local_header[2] != 0x03 || local_header[3] != 0x04) | ||||||
|  |       break; | ||||||
|  | 
 | ||||||
|  |     // read in the variable name
 | ||||||
|  |     uint16_t    name_len = *(uint16_t*)&local_header[26]; | ||||||
|  |     std::string varname(name_len, ' '); | ||||||
|  |     size_t      vname_res = fread(&varname[0], sizeof(char), name_len, fp); | ||||||
|  |     if (vname_res != name_len) | ||||||
|  |       throw std::runtime_error("npz_load: failed fread"); | ||||||
|  | 
 | ||||||
|  |     // erase the lagging .npy
 | ||||||
|  |     varname.erase(varname.end() - 4, varname.end()); | ||||||
|  | 
 | ||||||
|  |     // read in the extra field
 | ||||||
|  |     uint16_t extra_field_len = *(uint16_t*)&local_header[28]; | ||||||
|  |     if (extra_field_len > 0) { | ||||||
|  |       std::vector<char> buff(extra_field_len); | ||||||
|  |       size_t            efield_res = fread(&buff[0], sizeof(char), extra_field_len, fp); | ||||||
|  |       if (efield_res != extra_field_len) | ||||||
|  |         throw std::runtime_error("npz_load: failed fread"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     uint16_t compr_method  = *reinterpret_cast<uint16_t*>(&local_header[0] + 8); | ||||||
|  |     uint32_t compr_bytes   = *reinterpret_cast<uint32_t*>(&local_header[0] + 18); | ||||||
|  |     uint32_t uncompr_bytes = *reinterpret_cast<uint32_t*>(&local_header[0] + 22); | ||||||
|  | 
 | ||||||
|  |     if (compr_method == 0) { | ||||||
|  |       arrays[varname] = load_the_npy_file(fp); | ||||||
|  |     } else { | ||||||
|  |       arrays[varname] = load_the_npz_array(fp, compr_bytes, uncompr_bytes); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   fclose(fp); | ||||||
|  |   return arrays; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cnpy::NpyArray cnpy::npz_load(std::string fname, std::string varname) | ||||||
|  | { | ||||||
|  |   FILE* fp = fopen(fname.c_str(), "rb"); | ||||||
|  | 
 | ||||||
|  |   if (!fp) | ||||||
|  |     throw std::runtime_error("npz_load: Unable to open file " + fname); | ||||||
|  | 
 | ||||||
|  |   while (1) { | ||||||
|  |     std::vector<char> local_header(30); | ||||||
|  |     size_t            header_res = fread(&local_header[0], sizeof(char), 30, fp); | ||||||
|  |     if (header_res != 30) | ||||||
|  |       throw std::runtime_error("npz_load: failed fread"); | ||||||
|  | 
 | ||||||
|  |     // if we've reached the global header, stop reading
 | ||||||
|  |     if (local_header[2] != 0x03 || local_header[3] != 0x04) | ||||||
|  |       break; | ||||||
|  | 
 | ||||||
|  |     // read in the variable name
 | ||||||
|  |     uint16_t    name_len = *(uint16_t*)&local_header[26]; | ||||||
|  |     std::string vname(name_len, ' '); | ||||||
|  |     size_t      vname_res = fread(&vname[0], sizeof(char), name_len, fp); | ||||||
|  |     if (vname_res != name_len) | ||||||
|  |       throw std::runtime_error("npz_load: failed fread"); | ||||||
|  |     vname.erase(vname.end() - 4, vname.end()); // erase the lagging .npy
 | ||||||
|  | 
 | ||||||
|  |     // read in the extra field
 | ||||||
|  |     uint16_t extra_field_len = *(uint16_t*)&local_header[28]; | ||||||
|  |     fseek(fp, extra_field_len, SEEK_CUR); // skip past the extra field
 | ||||||
|  | 
 | ||||||
|  |     uint16_t compr_method  = *reinterpret_cast<uint16_t*>(&local_header[0] + 8); | ||||||
|  |     uint32_t compr_bytes   = *reinterpret_cast<uint32_t*>(&local_header[0] + 18); | ||||||
|  |     uint32_t uncompr_bytes = *reinterpret_cast<uint32_t*>(&local_header[0] + 22); | ||||||
|  | 
 | ||||||
|  |     if (vname == varname) { | ||||||
|  |       NpyArray array = (compr_method == 0) ? load_the_npy_file(fp) : load_the_npz_array(fp, compr_bytes, uncompr_bytes); | ||||||
|  |       fclose(fp); | ||||||
|  |       return array; | ||||||
|  |     } else { | ||||||
|  |       // skip past the data
 | ||||||
|  |       uint32_t size = *(uint32_t*)&local_header[22]; | ||||||
|  |       fseek(fp, size, SEEK_CUR); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   fclose(fp); | ||||||
|  | 
 | ||||||
|  |   // if we get here, we haven't found the variable in the file
 | ||||||
|  |   throw std::runtime_error("npz_load: Variable name " + varname + " not found in " + fname); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | cnpy::NpyArray cnpy::npy_load(std::string fname) | ||||||
|  | { | ||||||
|  |   FILE* fp = fopen(fname.c_str(), "rb"); | ||||||
|  | 
 | ||||||
|  |   if (!fp) | ||||||
|  |     throw std::runtime_error("npy_load: Unable to open file " + fname); | ||||||
|  | 
 | ||||||
|  |   NpyArray arr = load_the_npy_file(fp); | ||||||
|  | 
 | ||||||
|  |   fclose(fp); | ||||||
|  |   return arr; | ||||||
|  | } | ||||||
							
								
								
									
										316
									
								
								libs/common/cnpy/cnpy.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										316
									
								
								libs/common/cnpy/cnpy.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,316 @@ | |||||||
|  | // Copyright (C) 2011  Carl Rogers
 | ||||||
|  | // Released under MIT License
 | ||||||
|  | // license available in LICENSE file, or at http://www.opensource.org/licenses/mit-license.php
 | ||||||
|  | 
 | ||||||
|  | #ifndef LIBCNPY_H_ | ||||||
|  | #define LIBCNPY_H_ | ||||||
|  | 
 | ||||||
|  | // #include "Logging.h"
 | ||||||
|  | #include <zlib.h> | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | #include <cassert> | ||||||
|  | #include <cstdio> | ||||||
|  | #include <fstream> | ||||||
|  | #include <iostream> | ||||||
|  | #include <map> | ||||||
|  | #include <memory> | ||||||
|  | #include <numeric> | ||||||
|  | #include <sstream> | ||||||
|  | #include <stdexcept> | ||||||
|  | #include <string> | ||||||
|  | #include <typeinfo> | ||||||
|  | #include <vector> | ||||||
|  | 
 | ||||||
|  | namespace cnpy { | ||||||
|  | 
 | ||||||
|  | struct NpyArray | ||||||
|  | { | ||||||
|  |   NpyArray(const std::vector<size_t>& _shape, size_t _word_size, bool _fortran_order, std::string _typeName) | ||||||
|  |     : shape(_shape) | ||||||
|  |     , word_size(_word_size) | ||||||
|  |     , fortran_order(_fortran_order) | ||||||
|  |     , typeName(_typeName) | ||||||
|  |   { | ||||||
|  |     num_vals = 1; | ||||||
|  |     for (size_t i = 0; i < shape.size(); i++) | ||||||
|  |       num_vals *= shape[i]; | ||||||
|  |     data_holder = std::shared_ptr<std::vector<char>>(new std::vector<char>(num_vals * word_size)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   NpyArray() | ||||||
|  |     : shape(0) | ||||||
|  |     , word_size(0) | ||||||
|  |     , fortran_order(0) | ||||||
|  |     , num_vals(0) | ||||||
|  |   {} | ||||||
|  | 
 | ||||||
|  |   template <typename T> | ||||||
|  |   T* data() | ||||||
|  |   { | ||||||
|  |     return reinterpret_cast<T*>(&(*data_holder)[0]); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   template <typename T> | ||||||
|  |   const T* data() const | ||||||
|  |   { | ||||||
|  |     return reinterpret_cast<T*>(&(*data_holder)[0]); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   template <typename T> | ||||||
|  |   std::vector<T> as_vec() const | ||||||
|  |   { | ||||||
|  |     const T* p = data<T>(); | ||||||
|  |     return std::vector<T>(p, p + num_vals); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   size_t num_bytes() const { return data_holder->size(); } | ||||||
|  | 
 | ||||||
|  |   std::shared_ptr<std::vector<char>> data_holder; | ||||||
|  |   std::vector<size_t>                shape; | ||||||
|  |   size_t                             word_size; | ||||||
|  |   bool                               fortran_order; | ||||||
|  |   size_t                             num_vals; | ||||||
|  |   std::string                        typeName; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | using npz_t = std::map<std::string, NpyArray>; | ||||||
|  | 
 | ||||||
|  | char BigEndianTest(int size); | ||||||
|  | char map_type(const std::type_info& t); | ||||||
|  | template <typename T> | ||||||
|  | std::vector<char> create_npy_header(const std::vector<size_t>& shape); | ||||||
|  | void              parse_npy_header(FILE* fp, size_t& word_size, std::vector<size_t>& shape, bool& fortran_order, | ||||||
|  |                                    std::string& typeName); | ||||||
|  | void     parse_npy_header(unsigned char* buffer, size_t& word_size, std::vector<size_t>& shape, bool& fortran_order, | ||||||
|  |                           std::string& typeName); | ||||||
|  | void     parse_zip_footer(FILE* fp, uint16_t& nrecs, size_t& global_header_size, size_t& global_header_offset); | ||||||
|  | npz_t    npz_load(std::string fname); | ||||||
|  | NpyArray npz_load(std::string fname, std::string varname); | ||||||
|  | NpyArray npy_load(std::string fname); | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | std::vector<char>& operator+=(std::vector<char>& lhs, const T rhs) | ||||||
|  | { | ||||||
|  |   // write in little endian
 | ||||||
|  |   for (size_t byte = 0; byte < sizeof(T); byte++) { | ||||||
|  |     char val = *((char*)&rhs + byte); | ||||||
|  |     lhs.push_back(val); | ||||||
|  |   } | ||||||
|  |   return lhs; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <> | ||||||
|  | std::vector<char>& operator+=(std::vector<char>& lhs, const std::string rhs); | ||||||
|  | template <> | ||||||
|  | std::vector<char>& operator+=(std::vector<char>& lhs, const char* rhs); | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | int npy_save(std::string fname, const T* data, const std::vector<size_t> shape, std::string mode = "w") | ||||||
|  | { | ||||||
|  |   std::ofstream ofs(fname, std::ios::out); | ||||||
|  |   if (!ofs.is_open()) { | ||||||
|  |     return -1; | ||||||
|  |   } | ||||||
|  |   ofs.close(); | ||||||
|  |   FILE*               fp = NULL; | ||||||
|  |   std::vector<size_t> true_data_shape; // if appending, the shape of existing + new data
 | ||||||
|  | 
 | ||||||
|  |   if (mode == "a") | ||||||
|  |     fp = fopen(fname.c_str(), "r+b"); | ||||||
|  | 
 | ||||||
|  |   if (fp) { | ||||||
|  |     // file exists. we need to append to it. read the header, modify the array size
 | ||||||
|  |     size_t      word_size; | ||||||
|  |     bool        fortran_order; | ||||||
|  |     std::string typeName; | ||||||
|  |     parse_npy_header(fp, word_size, true_data_shape, fortran_order, typeName); | ||||||
|  |     assert(!fortran_order); | ||||||
|  | 
 | ||||||
|  |     if (word_size != sizeof(T)) { | ||||||
|  |       std::cout << "libnpy error: " << fname << " has word size " << word_size << " but npy_save appending data sized " | ||||||
|  |                 << sizeof(T) << "\n"; | ||||||
|  |       assert(word_size == sizeof(T)); | ||||||
|  |     } | ||||||
|  |     if (true_data_shape.size() != shape.size()) { | ||||||
|  |       std::cout << "libnpy error: npy_save attempting to append misdimensioned data to " << fname << "\n"; | ||||||
|  |       assert(true_data_shape.size() != shape.size()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     for (size_t i = 1; i < shape.size(); i++) { | ||||||
|  |       if (shape[i] != true_data_shape[i]) { | ||||||
|  |         std::cout << "libnpy error: npy_save attempting to append misshaped data to " << fname << "\n"; | ||||||
|  |         assert(shape[i] == true_data_shape[i]); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     true_data_shape[0] += shape[0]; | ||||||
|  |   } else { | ||||||
|  |     fp              = fopen(fname.c_str(), "wb"); | ||||||
|  |     true_data_shape = shape; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   std::vector<char> header = create_npy_header<T>(true_data_shape); | ||||||
|  |   size_t            nels   = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies<size_t>()); | ||||||
|  | 
 | ||||||
|  |   fseek(fp, 0, SEEK_SET); | ||||||
|  |   fwrite(&header[0], sizeof(char), header.size(), fp); | ||||||
|  |   fseek(fp, 0, SEEK_END); | ||||||
|  |   fwrite(data, sizeof(T), nels, fp); | ||||||
|  |   fclose(fp); | ||||||
|  |   return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | void npz_save(std::string zipname, std::string fname, const T* data, const std::vector<size_t>& shape, | ||||||
|  |               std::string mode = "w") | ||||||
|  | { | ||||||
|  |   // first, append a .npy to the fname
 | ||||||
|  |   fname += ".npy"; | ||||||
|  | 
 | ||||||
|  |   // now, on with the show
 | ||||||
|  |   FILE*             fp                   = NULL; | ||||||
|  |   uint16_t          nrecs                = 0; | ||||||
|  |   size_t            global_header_offset = 0; | ||||||
|  |   std::vector<char> global_header; | ||||||
|  | 
 | ||||||
|  |   if (mode == "a") | ||||||
|  |     fp = fopen(zipname.c_str(), "r+b"); | ||||||
|  | 
 | ||||||
|  |   if (fp) { | ||||||
|  |     // zip file exists. we need to add a new npy file to it.
 | ||||||
|  |     // first read the footer. this gives us the offset and size of the global header
 | ||||||
|  |     // then read and store the global header.
 | ||||||
|  |     // below, we will write the the new data at the start of the global header then append the global header and footer
 | ||||||
|  |     // below it
 | ||||||
|  |     size_t global_header_size; | ||||||
|  |     parse_zip_footer(fp, nrecs, global_header_size, global_header_offset); | ||||||
|  |     fseek(fp, global_header_offset, SEEK_SET); | ||||||
|  |     global_header.resize(global_header_size); | ||||||
|  |     size_t res = fread(&global_header[0], sizeof(char), global_header_size, fp); | ||||||
|  |     if (res != global_header_size) { | ||||||
|  |       throw std::runtime_error("npz_save: header read error while adding to existing zip"); | ||||||
|  |     } | ||||||
|  |     fseek(fp, global_header_offset, SEEK_SET); | ||||||
|  |   } else { | ||||||
|  |     fp = fopen(zipname.c_str(), "wb"); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   std::vector<char> npy_header = create_npy_header<T>(shape); | ||||||
|  | 
 | ||||||
|  |   size_t nels   = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies<size_t>()); | ||||||
|  |   size_t nbytes = nels * sizeof(T) + npy_header.size(); | ||||||
|  | 
 | ||||||
|  |   // get the CRC of the data to be added
 | ||||||
|  |   uint32_t crc = crc32(0L, (uint8_t*)&npy_header[0], npy_header.size()); | ||||||
|  |   crc          = crc32(crc, (uint8_t*)data, nels * sizeof(T)); | ||||||
|  | 
 | ||||||
|  |   // build the local header
 | ||||||
|  |   std::vector<char> local_header; | ||||||
|  |   local_header += "PK";                   // first part of sig
 | ||||||
|  |   local_header += (uint16_t)0x0403;       // second part of sig
 | ||||||
|  |   local_header += (uint16_t)20;           // min version to extract
 | ||||||
|  |   local_header += (uint16_t)0;            // general purpose bit flag
 | ||||||
|  |   local_header += (uint16_t)0;            // compression method
 | ||||||
|  |   local_header += (uint16_t)0;            // file last mod time
 | ||||||
|  |   local_header += (uint16_t)0;            // file last mod date
 | ||||||
|  |   local_header += (uint32_t)crc;          // crc
 | ||||||
|  |   local_header += (uint32_t)nbytes;       // compressed size
 | ||||||
|  |   local_header += (uint32_t)nbytes;       // uncompressed size
 | ||||||
|  |   local_header += (uint16_t)fname.size(); // fname length
 | ||||||
|  |   local_header += (uint16_t)0;            // extra field length
 | ||||||
|  |   local_header += fname; | ||||||
|  | 
 | ||||||
|  |   // build global header
 | ||||||
|  |   global_header += "PK";             // first part of sig
 | ||||||
|  |   global_header += (uint16_t)0x0201; // second part of sig
 | ||||||
|  |   global_header += (uint16_t)20;     // version made by
 | ||||||
|  |   global_header.insert(global_header.end(), local_header.begin() + 4, local_header.begin() + 30); | ||||||
|  |   global_header += (uint16_t)0; // file comment length
 | ||||||
|  |   global_header += (uint16_t)0; // disk number where file starts
 | ||||||
|  |   global_header += (uint16_t)0; // internal file attributes
 | ||||||
|  |   global_header += (uint32_t)0; // external file attributes
 | ||||||
|  |   global_header += (uint32_t) | ||||||
|  |     global_header_offset; // relative offset of local file header, since it begins where the global header used to begin
 | ||||||
|  |   global_header += fname; | ||||||
|  | 
 | ||||||
|  |   // build footer
 | ||||||
|  |   std::vector<char> footer; | ||||||
|  |   footer += "PK";                           // first part of sig
 | ||||||
|  |   footer += (uint16_t)0x0605;               // second part of sig
 | ||||||
|  |   footer += (uint16_t)0;                    // number of this disk
 | ||||||
|  |   footer += (uint16_t)0;                    // disk where footer starts
 | ||||||
|  |   footer += (uint16_t)(nrecs + 1);          // number of records on this disk
 | ||||||
|  |   footer += (uint16_t)(nrecs + 1);          // total number of records
 | ||||||
|  |   footer += (uint32_t)global_header.size(); // nbytes of global headers
 | ||||||
|  |   footer += | ||||||
|  |     (uint32_t)(global_header_offset + nbytes + local_header.size()); // offset of start of global headers, since global
 | ||||||
|  |                                                                      // header now starts after newly written array
 | ||||||
|  |   footer += (uint16_t)0;                                             // zip file comment length
 | ||||||
|  | 
 | ||||||
|  |   // write everything
 | ||||||
|  |   fwrite(&local_header[0], sizeof(char), local_header.size(), fp); | ||||||
|  |   fwrite(&npy_header[0], sizeof(char), npy_header.size(), fp); | ||||||
|  |   fwrite(data, sizeof(T), nels, fp); | ||||||
|  |   fwrite(&global_header[0], sizeof(char), global_header.size(), fp); | ||||||
|  |   fwrite(&footer[0], sizeof(char), footer.size(), fp); | ||||||
|  |   fclose(fp); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | void npy_save(std::string fname, const std::vector<T> data, std::string mode = "w") | ||||||
|  | { | ||||||
|  |   std::vector<size_t> shape; | ||||||
|  |   shape.push_back(data.size()); | ||||||
|  |   npy_save(fname, &data[0], shape, mode); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | void npz_save(std::string zipname, std::string fname, const std::vector<T> data, std::string mode = "w") | ||||||
|  | { | ||||||
|  |   std::vector<size_t> shape; | ||||||
|  |   shape.push_back(data.size()); | ||||||
|  |   npz_save(zipname, fname, &data[0], shape, mode); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | std::vector<char> create_npy_header(const std::vector<size_t>& shape) | ||||||
|  | { | ||||||
|  |   const char* tpye_name = typeid(T).name(); | ||||||
|  |   std::vector<char> dict; | ||||||
|  |   dict += "{'descr': '"; | ||||||
|  |   dict += BigEndianTest(sizeof(T)); | ||||||
|  |   if (std::string(tpye_name) == "N4rknn7float16E") { | ||||||
|  |     dict += "f"; | ||||||
|  |   } else { | ||||||
|  |     dict += map_type(typeid(T)); | ||||||
|  |   } | ||||||
|  |   dict += std::to_string(sizeof(T)); | ||||||
|  |   dict += "', 'fortran_order': False, 'shape': ("; | ||||||
|  |   dict += std::to_string(shape[0]); | ||||||
|  |   for (size_t i = 1; i < shape.size(); i++) { | ||||||
|  |     dict += ", "; | ||||||
|  |     dict += std::to_string(shape[i]); | ||||||
|  |   } | ||||||
|  |   if (shape.size() == 1) | ||||||
|  |     dict += ","; | ||||||
|  |   dict += "), }"; | ||||||
|  |   // pad with spaces so that preamble+dict is modulo 16 bytes. preamble is 10 bytes. dict needs to end with \n
 | ||||||
|  |   int remainder = 16 - (10 + dict.size()) % 16; | ||||||
|  |   dict.insert(dict.end(), remainder, ' '); | ||||||
|  |   dict.back() = '\n'; | ||||||
|  | 
 | ||||||
|  |   std::vector<char> header; | ||||||
|  |   header += (char)0x93; | ||||||
|  |   header += "NUMPY"; | ||||||
|  |   header += (char)0x01; // major version of numpy format
 | ||||||
|  |   header += (char)0x00; // minor version of numpy format
 | ||||||
|  |   header += (uint16_t)dict.size(); | ||||||
|  |   header.insert(header.end(), dict.begin(), dict.end()); | ||||||
|  | 
 | ||||||
|  |   return header; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace cnpy
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										1662
									
								
								libs/common/cnpy/logging.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1662
									
								
								libs/common/cnpy/logging.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										136
									
								
								libs/common/drm/include/demo.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								libs/common/drm/include/demo.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,136 @@ | |||||||
|  | /*
 | ||||||
|  | 
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef DEMO_H_ | ||||||
|  | #define DEMO_H_ | ||||||
|  | //在此处包含其它头文件
 | ||||||
|  | #include "stdio.h" | ||||||
|  | #include "string.h" | ||||||
|  | #include "stdlib.h" | ||||||
|  | #include "math.h" | ||||||
|  | 
 | ||||||
|  | #include "demo_define.h" | ||||||
|  | #include "tool.h" | ||||||
|  | #include "inital_alg_params_ynr.h" | ||||||
|  | #include "inital_alg_params_gic.h" | ||||||
|  | #include "inital_alg_params_lsc.h" | ||||||
|  | #include "inital_alg_params_lsc2.h" | ||||||
|  | #include "inital_alg_params_rk_shapren_HW.h" | ||||||
|  | #include "inital_alg_params_rk_edgefilter.h" | ||||||
|  | 
 | ||||||
|  | #include "initial_alg_params_bayernr.h" | ||||||
|  | 
 | ||||||
|  | #include "inital_alg_params_rkuvnr.h" | ||||||
|  | #include "inital_alg_params_rk_cnr.h" | ||||||
|  | 
 | ||||||
|  | #include "inital_alg_params_mfnr.h" | ||||||
|  | #include "rk_aiq_awb_algo_v200.h" | ||||||
|  | #define         FILE_RAW_EXT         ".raw" | ||||||
|  | #define         FILE_YUV_EXT         ".yuv" | ||||||
|  | #define         FILE_DAT_EXT         ".dat" | ||||||
|  | 
 | ||||||
|  | typedef enum YUV_FILE_FMT | ||||||
|  | { | ||||||
|  |     F_YUV_420SP        = 0x00, | ||||||
|  |     F_YUV_420P         = 0x01, | ||||||
|  |     F_YUV_422I         = 0x02, | ||||||
|  |     F_YUV_422SP        = 0x03, | ||||||
|  |     F_YUV_422P         = 0x04, | ||||||
|  |     F_YUV_444I         = 0x05, | ||||||
|  | 
 | ||||||
|  |     F_YUV_MAX          = 0x10, | ||||||
|  | }YUV_FILE_FMT_t; | ||||||
|  | 
 | ||||||
|  | typedef enum INPUT_FILE_FMT | ||||||
|  | { | ||||||
|  |     F_IN_FMT_RAW         = 0x00, | ||||||
|  |     F_IN_FMT_YUV, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     F_IN_FMT_MAX         = 0x10, | ||||||
|  | }INPUT_FILE_FMT_t; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //此处定义参数
 | ||||||
|  | typedef struct tag_config_com | ||||||
|  | { | ||||||
|  |     int exp_info_en    ; | ||||||
|  |     int framenum    ; | ||||||
|  |     int rawwid      ; | ||||||
|  |     int rawhgt      ; | ||||||
|  |     int rawbit      ; | ||||||
|  |     int bayerfmt    ; | ||||||
|  |     int yuvbit      ; | ||||||
|  |     int yuvfmt      ; | ||||||
|  | }tag_config_com; | ||||||
|  | 
 | ||||||
|  | typedef struct tag_config_txt | ||||||
|  | { | ||||||
|  |     tag_config_com config_com; | ||||||
|  | 
 | ||||||
|  |     int framecnt    ; | ||||||
|  |     int iso         ; | ||||||
|  |     int exptime[3]  ; | ||||||
|  |     int expgain[3]  ; | ||||||
|  |     int rgain       ; | ||||||
|  |     int bgain       ; | ||||||
|  |     int grgain      ; | ||||||
|  |     int gbgain      ; | ||||||
|  |     int dGain       ; | ||||||
|  |     int lux         ; | ||||||
|  | }tag_config_txt; | ||||||
|  | 
 | ||||||
|  | typedef struct tag_ST_DEMO_INPUT_PARAMS | ||||||
|  | { | ||||||
|  | 	int width;        //raw图宽
 | ||||||
|  | 	int height;       //raw图高
 | ||||||
|  | 	int bayerPattern; //bayer pattern格式:0--BGGR,1--GBRG,2--GRBG,3--RGGB
 | ||||||
|  | 	int yuvFmt;       //yuv file     格式: YUV_FILE_FMT_t
 | ||||||
|  | 	int bitValue;     //raw数据位宽
 | ||||||
|  | 	int hdr_framenum; | ||||||
|  | 	float expGain[MAX_HDR_FRM_NUM];          //
 | ||||||
|  | 	float expTime[MAX_HDR_FRM_NUM];      //曝光时间
 | ||||||
|  | 	int rGain;        //wb rgain
 | ||||||
|  | 	int bGain;        //wb bgain
 | ||||||
|  | 	int grGain;        //wb grgain
 | ||||||
|  | 	int gbGain;        //wb gbgain
 | ||||||
|  | 	int dGain;        //wb gbgain
 | ||||||
|  |     int fileFmt;      //input file format:INPUT_FILE_FMT_t
 | ||||||
|  | 	int width_full;        //raw图宽
 | ||||||
|  | 	int height_full;       //raw图高
 | ||||||
|  | 	int crop_width; | ||||||
|  | 	int crop_height; | ||||||
|  | 	int crop_xoffset; | ||||||
|  | 	int crop_yoffset; | ||||||
|  | 
 | ||||||
|  | 	char pathFileCfg[256];//config文件路径
 | ||||||
|  | 	char pathRawData[256];//raw图路径
 | ||||||
|  | 	char nameRawData[256];//raw图名称
 | ||||||
|  | 	char pathExpInfo[256];//exp_info文件路径
 | ||||||
|  | 	char pathReslut[256];//结果保存文件夹路径
 | ||||||
|  | 	char suffix[256];       // 输出文件后缀字符
 | ||||||
|  |     char pathRtlin[256];    //rtl in path
 | ||||||
|  | 	int skip_num; | ||||||
|  | 	int frame_end; | ||||||
|  | 
 | ||||||
|  | 	int hdr_proc_mode; | ||||||
|  | 	int out_mode; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     char  dbgFlg[1024];        // must > ISP_CAP_MAX
 | ||||||
|  |     int  config_full; | ||||||
|  | 
 | ||||||
|  |     int exp_info_en; | ||||||
|  |     int file_info_en; | ||||||
|  |     FILE *fp_exp_info; | ||||||
|  | }ST_DEMO_INPUT_PARAMS; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //此处声明函数
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif  // DEMO_H_
 | ||||||
							
								
								
									
										44
									
								
								libs/common/drm/include/demo_define.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								libs/common/drm/include/demo_define.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | /*
 | ||||||
|  | 
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef DEFINE_H_ | ||||||
|  | #define DEFINE_H_ | ||||||
|  | //在此处包含其它头文件
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #define S7_EDGE					1 | ||||||
|  | #define GZ						2 | ||||||
|  | #define DVR						3 | ||||||
|  | /*
 | ||||||
|  | #define ISP_BAYER_NR            1 | ||||||
|  | #define ISP_DPC                 2 | ||||||
|  | #define ISP_BLC                 3 | ||||||
|  | #define ISP_STAT_3A             4 | ||||||
|  | #define ISP_LSC                 5 | ||||||
|  | #define ISP_AWBG                6 | ||||||
|  | #define ISP_VHDM                7 | ||||||
|  | #define ISP_GAMMA               8 | ||||||
|  | #define ISP_CSM                 9 | ||||||
|  | #define ISP_DRC                 10 | ||||||
|  | #define ISP_RGB2YUV             11 | ||||||
|  | #define ISP_LCE                 12 | ||||||
|  | #define ISP_Y_NR                13 | ||||||
|  | #define ISP_SHARPEN             14 | ||||||
|  | #define ISP_SCALING             15 | ||||||
|  | #define ISP_GIC                 16 | ||||||
|  | #define ISP_UV_NR               17 | ||||||
|  | #define ISP_HDR_MERGE           18 | ||||||
|  | #define ISP_HDR_TMO             19 | ||||||
|  | #define ISP_DPN                 20 | ||||||
|  | #define ISP_CTK                 21 | ||||||
|  | #define ISP_WDR                 22 | ||||||
|  | */ | ||||||
|  | #define SAVE_RESULT             1 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //#define GET_LSC_CALIBRATION_DATA       //获取lens shading校正标定数据
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif  // DEFINE_H_
 | ||||||
							
								
								
									
										1067
									
								
								libs/common/drm/include/libdrm/amdgpu_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1067
									
								
								libs/common/drm/include/libdrm/amdgpu_drm.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1042
									
								
								libs/common/drm/include/libdrm/drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1042
									
								
								libs/common/drm/include/libdrm/drm.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										763
									
								
								libs/common/drm/include/libdrm/drm_fourcc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										763
									
								
								libs/common/drm/include/libdrm/drm_fourcc.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,763 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright 2011 Intel Corporation | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef DRM_FOURCC_H | ||||||
|  | #define DRM_FOURCC_H | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * DOC: overview | ||||||
|  |  * | ||||||
|  |  * In the DRM subsystem, framebuffer pixel formats are described using the | ||||||
|  |  * fourcc codes defined in `include/uapi/drm/drm_fourcc.h`. In addition to the | ||||||
|  |  * fourcc code, a Format Modifier may optionally be provided, in order to | ||||||
|  |  * further describe the buffer's format - for example tiling or compression. | ||||||
|  |  * | ||||||
|  |  * Format Modifiers | ||||||
|  |  * ---------------- | ||||||
|  |  * | ||||||
|  |  * Format modifiers are used in conjunction with a fourcc code, forming a | ||||||
|  |  * unique fourcc:modifier pair. This format:modifier pair must fully define the | ||||||
|  |  * format and data layout of the buffer, and should be the only way to describe | ||||||
|  |  * that particular buffer. | ||||||
|  |  * | ||||||
|  |  * Having multiple fourcc:modifier pairs which describe the same layout should | ||||||
|  |  * be avoided, as such aliases run the risk of different drivers exposing | ||||||
|  |  * different names for the same data format, forcing userspace to understand | ||||||
|  |  * that they are aliases. | ||||||
|  |  * | ||||||
|  |  * Format modifiers may change any property of the buffer, including the number | ||||||
|  |  * of planes and/or the required allocation size. Format modifiers are | ||||||
|  |  * vendor-namespaced, and as such the relationship between a fourcc code and a | ||||||
|  |  * modifier is specific to the modifer being used. For example, some modifiers | ||||||
|  |  * may preserve meaning - such as number of planes - from the fourcc code, | ||||||
|  |  * whereas others may not. | ||||||
|  |  * | ||||||
|  |  * Vendors should document their modifier usage in as much detail as | ||||||
|  |  * possible, to ensure maximum compatibility across devices, drivers and | ||||||
|  |  * applications. | ||||||
|  |  * | ||||||
|  |  * The authoritative list of format modifier codes is found in | ||||||
|  |  * `include/uapi/drm/drm_fourcc.h` | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \ | ||||||
|  | 				 ((__u32)(c) << 16) | ((__u32)(d) << 24)) | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_BIG_ENDIAN (1<<31) /* format is big endian instead of little endian */ | ||||||
|  | 
 | ||||||
|  | /* Reserve 0 for the invalid format specifier */ | ||||||
|  | #define DRM_FORMAT_INVALID	0 | ||||||
|  | 
 | ||||||
|  | /* color index */ | ||||||
|  | #define DRM_FORMAT_C8		fourcc_code('C', '8', ' ', ' ') /* [7:0] C */ | ||||||
|  | 
 | ||||||
|  | /* 8 bpp Red */ | ||||||
|  | #define DRM_FORMAT_R8		fourcc_code('R', '8', ' ', ' ') /* [7:0] R */ | ||||||
|  | 
 | ||||||
|  | /* 16 bpp Red */ | ||||||
|  | #define DRM_FORMAT_R16		fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */ | ||||||
|  | 
 | ||||||
|  | /* 16 bpp RG */ | ||||||
|  | #define DRM_FORMAT_RG88		fourcc_code('R', 'G', '8', '8') /* [15:0] R:G 8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_GR88		fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */ | ||||||
|  | 
 | ||||||
|  | /* 32 bpp RG */ | ||||||
|  | #define DRM_FORMAT_RG1616	fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 16:16 little endian */ | ||||||
|  | #define DRM_FORMAT_GR1616	fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 16:16 little endian */ | ||||||
|  | 
 | ||||||
|  | /* 8 bpp RGB */ | ||||||
|  | #define DRM_FORMAT_RGB332	fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */ | ||||||
|  | #define DRM_FORMAT_BGR233	fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */ | ||||||
|  | 
 | ||||||
|  | /* 16 bpp RGB */ | ||||||
|  | #define DRM_FORMAT_XRGB4444	fourcc_code('X', 'R', '1', '2') /* [15:0] x:R:G:B 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_XBGR4444	fourcc_code('X', 'B', '1', '2') /* [15:0] x:B:G:R 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBX4444	fourcc_code('R', 'X', '1', '2') /* [15:0] R:G:B:x 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRX4444	fourcc_code('B', 'X', '1', '2') /* [15:0] B:G:R:x 4:4:4:4 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_ARGB4444	fourcc_code('A', 'R', '1', '2') /* [15:0] A:R:G:B 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_ABGR4444	fourcc_code('A', 'B', '1', '2') /* [15:0] A:B:G:R 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBA4444	fourcc_code('R', 'A', '1', '2') /* [15:0] R:G:B:A 4:4:4:4 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRA4444	fourcc_code('B', 'A', '1', '2') /* [15:0] B:G:R:A 4:4:4:4 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_XRGB1555	fourcc_code('X', 'R', '1', '5') /* [15:0] x:R:G:B 1:5:5:5 little endian */ | ||||||
|  | #define DRM_FORMAT_XBGR1555	fourcc_code('X', 'B', '1', '5') /* [15:0] x:B:G:R 1:5:5:5 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBX5551	fourcc_code('R', 'X', '1', '5') /* [15:0] R:G:B:x 5:5:5:1 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRX5551	fourcc_code('B', 'X', '1', '5') /* [15:0] B:G:R:x 5:5:5:1 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_ARGB1555	fourcc_code('A', 'R', '1', '5') /* [15:0] A:R:G:B 1:5:5:5 little endian */ | ||||||
|  | #define DRM_FORMAT_ABGR1555	fourcc_code('A', 'B', '1', '5') /* [15:0] A:B:G:R 1:5:5:5 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBA5551	fourcc_code('R', 'A', '1', '5') /* [15:0] R:G:B:A 5:5:5:1 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRA5551	fourcc_code('B', 'A', '1', '5') /* [15:0] B:G:R:A 5:5:5:1 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_RGB565	fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 5:6:5 little endian */ | ||||||
|  | #define DRM_FORMAT_BGR565	fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 5:6:5 little endian */ | ||||||
|  | 
 | ||||||
|  | /* 24 bpp RGB */ | ||||||
|  | #define DRM_FORMAT_RGB888	fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B little endian */ | ||||||
|  | #define DRM_FORMAT_BGR888	fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R little endian */ | ||||||
|  | 
 | ||||||
|  | /* 32 bpp RGB */ | ||||||
|  | #define DRM_FORMAT_XRGB8888	fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_XBGR8888	fourcc_code('X', 'B', '2', '4') /* [31:0] x:B:G:R 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBX8888	fourcc_code('R', 'X', '2', '4') /* [31:0] R:G:B:x 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRX8888	fourcc_code('B', 'X', '2', '4') /* [31:0] B:G:R:x 8:8:8:8 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_ARGB8888	fourcc_code('A', 'R', '2', '4') /* [31:0] A:R:G:B 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_ABGR8888	fourcc_code('A', 'B', '2', '4') /* [31:0] A:B:G:R 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBA8888	fourcc_code('R', 'A', '2', '4') /* [31:0] R:G:B:A 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRA8888	fourcc_code('B', 'A', '2', '4') /* [31:0] B:G:R:A 8:8:8:8 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_XRGB2101010	fourcc_code('X', 'R', '3', '0') /* [31:0] x:R:G:B 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_XBGR2101010	fourcc_code('X', 'B', '3', '0') /* [31:0] x:B:G:R 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBX1010102	fourcc_code('R', 'X', '3', '0') /* [31:0] R:G:B:x 10:10:10:2 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRX1010102	fourcc_code('B', 'X', '3', '0') /* [31:0] B:G:R:x 10:10:10:2 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_ARGB2101010	fourcc_code('A', 'R', '3', '0') /* [31:0] A:R:G:B 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_ABGR2101010	fourcc_code('A', 'B', '3', '0') /* [31:0] A:B:G:R 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_RGBA1010102	fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ | ||||||
|  | #define DRM_FORMAT_BGRA1010102	fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Floating point 64bpp RGB | ||||||
|  |  * IEEE 754-2008 binary16 half-precision float | ||||||
|  |  * [15:0] sign:exponent:mantissa 1:5:10 | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_XRGB16161616F fourcc_code('X', 'R', '4', 'H') /* [63:0] x:R:G:B 16:16:16:16 little endian */ | ||||||
|  | #define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */ | ||||||
|  | #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ | ||||||
|  | 
 | ||||||
|  | /* packed YCbCr */ | ||||||
|  | #define DRM_FORMAT_YUYV		fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_YVYU		fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_UYVY		fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_VYUY		fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_AYUV		fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_XYUV8888	fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_VUY888	fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */ | ||||||
|  | #define DRM_FORMAT_VUY101010	fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * packed Y2xx indicate for each component, xx valid data occupy msb | ||||||
|  |  * 16-xx padding occupy lsb | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_Y210         fourcc_code('Y', '2', '1', '0') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 10:6:10:6:10:6:10:6 little endian per 2 Y pixels */ | ||||||
|  | #define DRM_FORMAT_Y212         fourcc_code('Y', '2', '1', '2') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 12:4:12:4:12:4:12:4 little endian per 2 Y pixels */ | ||||||
|  | #define DRM_FORMAT_Y216         fourcc_code('Y', '2', '1', '6') /* [63:0] Cr0:Y1:Cb0:Y0 16:16:16:16 little endian per 2 Y pixels */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * packed Y4xx indicate for each component, xx valid data occupy msb | ||||||
|  |  * 16-xx padding occupy lsb except Y410 | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_Y410         fourcc_code('Y', '4', '1', '0') /* [31:0] A:Cr:Y:Cb 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_Y412         fourcc_code('Y', '4', '1', '2') /* [63:0] A:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */ | ||||||
|  | #define DRM_FORMAT_Y416         fourcc_code('Y', '4', '1', '6') /* [63:0] A:Cr:Y:Cb 16:16:16:16 little endian */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_XVYU2101010	fourcc_code('X', 'V', '3', '0') /* [31:0] X:Cr:Y:Cb 2:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_XVYU12_16161616	fourcc_code('X', 'V', '3', '6') /* [63:0] X:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */ | ||||||
|  | #define DRM_FORMAT_XVYU16161616	fourcc_code('X', 'V', '4', '8') /* [63:0] X:Cr:Y:Cb 16:16:16:16 little endian */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * packed YCbCr420 2x2 tiled formats | ||||||
|  |  * first 64 bits will contain Y,Cb,Cr components for a 2x2 tile | ||||||
|  |  */ | ||||||
|  | /* [63:0]   A3:A2:Y3:0:Cr0:0:Y2:0:A1:A0:Y1:0:Cb0:0:Y0:0  1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */ | ||||||
|  | #define DRM_FORMAT_Y0L0		fourcc_code('Y', '0', 'L', '0') | ||||||
|  | /* [63:0]   X3:X2:Y3:0:Cr0:0:Y2:0:X1:X0:Y1:0:Cb0:0:Y0:0  1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */ | ||||||
|  | #define DRM_FORMAT_X0L0		fourcc_code('X', '0', 'L', '0') | ||||||
|  | 
 | ||||||
|  | /* [63:0]   A3:A2:Y3:Cr0:Y2:A1:A0:Y1:Cb0:Y0  1:1:10:10:10:1:1:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_Y0L2		fourcc_code('Y', '0', 'L', '2') | ||||||
|  | /* [63:0]   X3:X2:Y3:Cr0:Y2:X1:X0:Y1:Cb0:Y0  1:1:10:10:10:1:1:10:10:10 little endian */ | ||||||
|  | #define DRM_FORMAT_X0L2		fourcc_code('X', '0', 'L', '2') | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 1-plane YUV 4:2:0 | ||||||
|  |  * In these formats, the component ordering is specified (Y, followed by U | ||||||
|  |  * then V), but the exact Linear layout is undefined. | ||||||
|  |  * These formats can only be used with a non-Linear modifier. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_YUV420_8BIT	fourcc_code('Y', 'U', '0', '8') | ||||||
|  | #define DRM_FORMAT_YUV420_10BIT	fourcc_code('Y', 'U', '1', '0') | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane RGB + A | ||||||
|  |  * index 0 = RGB plane, same format as the corresponding non _A8 format has | ||||||
|  |  * index 1 = A plane, [7:0] A | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_XRGB8888_A8	fourcc_code('X', 'R', 'A', '8') | ||||||
|  | #define DRM_FORMAT_XBGR8888_A8	fourcc_code('X', 'B', 'A', '8') | ||||||
|  | #define DRM_FORMAT_RGBX8888_A8	fourcc_code('R', 'X', 'A', '8') | ||||||
|  | #define DRM_FORMAT_BGRX8888_A8	fourcc_code('B', 'X', 'A', '8') | ||||||
|  | #define DRM_FORMAT_RGB888_A8	fourcc_code('R', '8', 'A', '8') | ||||||
|  | #define DRM_FORMAT_BGR888_A8	fourcc_code('B', '8', 'A', '8') | ||||||
|  | #define DRM_FORMAT_RGB565_A8	fourcc_code('R', '5', 'A', '8') | ||||||
|  | #define DRM_FORMAT_BGR565_A8	fourcc_code('B', '5', 'A', '8') | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane YCbCr | ||||||
|  |  * index 0 = Y plane, [7:0] Y | ||||||
|  |  * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian | ||||||
|  |  * or | ||||||
|  |  * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_NV12		fourcc_code('N', 'V', '1', '2') /* 2x2 subsampled Cr:Cb plane */ | ||||||
|  | #define DRM_FORMAT_NV21		fourcc_code('N', 'V', '2', '1') /* 2x2 subsampled Cb:Cr plane */ | ||||||
|  | #define DRM_FORMAT_NV16		fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */ | ||||||
|  | #define DRM_FORMAT_NV61		fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */ | ||||||
|  | #define DRM_FORMAT_NV24		fourcc_code('N', 'V', '2', '4') /* non-subsampled Cr:Cb plane */ | ||||||
|  | #define DRM_FORMAT_NV42		fourcc_code('N', 'V', '4', '2') /* non-subsampled Cb:Cr plane */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane YCbCr MSB aligned | ||||||
|  |  * index 0 = Y plane, [15:0] Y:x [10:6] little endian | ||||||
|  |  * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [10:6:10:6] little endian | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_P210		fourcc_code('P', '2', '1', '0') /* 2x1 subsampled Cr:Cb plane, 10 bit per channel */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane YCbCr MSB aligned | ||||||
|  |  * index 0 = Y plane, [15:0] Y:x [10:6] little endian | ||||||
|  |  * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [10:6:10:6] little endian | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_P010		fourcc_code('P', '0', '1', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane YCbCr MSB aligned | ||||||
|  |  * index 0 = Y plane, [15:0] Y:x [12:4] little endian | ||||||
|  |  * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [12:4:12:4] little endian | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_P012		fourcc_code('P', '0', '1', '2') /* 2x2 subsampled Cr:Cb plane 12 bits per channel */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 2 plane YCbCr MSB aligned | ||||||
|  |  * index 0 = Y plane, [15:0] Y little endian | ||||||
|  |  * index 1 = Cr:Cb plane, [31:0] Cr:Cb [16:16] little endian | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_P016		fourcc_code('P', '0', '1', '6') /* 2x2 subsampled Cr:Cb plane 16 bits per channel */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 3 plane YCbCr | ||||||
|  |  * index 0: Y plane, [7:0] Y | ||||||
|  |  * index 1: Cb plane, [7:0] Cb | ||||||
|  |  * index 2: Cr plane, [7:0] Cr | ||||||
|  |  * or | ||||||
|  |  * index 1: Cr plane, [7:0] Cr | ||||||
|  |  * index 2: Cb plane, [7:0] Cb | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_YUV410	fourcc_code('Y', 'U', 'V', '9') /* 4x4 subsampled Cb (1) and Cr (2) planes */ | ||||||
|  | #define DRM_FORMAT_YVU410	fourcc_code('Y', 'V', 'U', '9') /* 4x4 subsampled Cr (1) and Cb (2) planes */ | ||||||
|  | #define DRM_FORMAT_YUV411	fourcc_code('Y', 'U', '1', '1') /* 4x1 subsampled Cb (1) and Cr (2) planes */ | ||||||
|  | #define DRM_FORMAT_YVU411	fourcc_code('Y', 'V', '1', '1') /* 4x1 subsampled Cr (1) and Cb (2) planes */ | ||||||
|  | #define DRM_FORMAT_YUV420	fourcc_code('Y', 'U', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */ | ||||||
|  | #define DRM_FORMAT_YVU420	fourcc_code('Y', 'V', '1', '2') /* 2x2 subsampled Cr (1) and Cb (2) planes */ | ||||||
|  | #define DRM_FORMAT_YUV422	fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */ | ||||||
|  | #define DRM_FORMAT_YVU422	fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */ | ||||||
|  | #define DRM_FORMAT_YUV444	fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ | ||||||
|  | #define DRM_FORMAT_YVU444	fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Format Modifiers: | ||||||
|  |  * | ||||||
|  |  * Format modifiers describe, typically, a re-ordering or modification | ||||||
|  |  * of the data in a plane of an FB.  This can be used to express tiled/ | ||||||
|  |  * swizzled formats, or compression, or a combination of the two. | ||||||
|  |  * | ||||||
|  |  * The upper 8 bits of the format modifier are a vendor-id as assigned | ||||||
|  |  * below.  The lower 56 bits are assigned as vendor sees fit. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Vendor Ids: */ | ||||||
|  | #define DRM_FORMAT_MOD_NONE           0 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_NONE    0 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_INTEL   0x01 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_AMD     0x02 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_NVIDIA  0x03 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_QCOM    0x05 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_ARM     0x08 | ||||||
|  | #define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09 | ||||||
|  | 
 | ||||||
|  | /* add more to the end as needed */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_RESERVED	      ((1ULL << 56) - 1) | ||||||
|  | 
 | ||||||
|  | #define fourcc_mod_code(vendor, val) \ | ||||||
|  | 	((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL)) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Format Modifier tokens: | ||||||
|  |  * | ||||||
|  |  * When adding a new token please document the layout with a code comment, | ||||||
|  |  * similar to the fourcc codes above. drm_fourcc.h is considered the | ||||||
|  |  * authoritative source for all of these. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Invalid Modifier | ||||||
|  |  * | ||||||
|  |  * This modifier can be used as a sentinel to terminate the format modifiers | ||||||
|  |  * list, or to initialize a variable with an invalid modifier. It might also be | ||||||
|  |  * used to report an error back to userspace for certain APIs. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_INVALID	fourcc_mod_code(NONE, DRM_FORMAT_RESERVED) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Linear Layout | ||||||
|  |  * | ||||||
|  |  * Just plain linear layout. Note that this is different from no specifying any | ||||||
|  |  * modifier (e.g. not setting DRM_MODE_FB_MODIFIERS in the DRM_ADDFB2 ioctl), | ||||||
|  |  * which tells the driver to also take driver-internal information into account | ||||||
|  |  * and so might actually result in a tiled framebuffer. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_LINEAR	fourcc_mod_code(NONE, 0) | ||||||
|  | 
 | ||||||
|  | /* Intel framebuffer modifiers */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Intel X-tiling layout | ||||||
|  |  * | ||||||
|  |  * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb) | ||||||
|  |  * in row-major layout. Within the tile bytes are laid out row-major, with | ||||||
|  |  * a platform-dependent stride. On top of that the memory can apply | ||||||
|  |  * platform-depending swizzling of some higher address bits into bit6. | ||||||
|  |  * | ||||||
|  |  * This format is highly platforms specific and not useful for cross-driver | ||||||
|  |  * sharing. It exists since on a given platform it does uniquely identify the | ||||||
|  |  * layout in a simple way for i915-specific userspace. | ||||||
|  |  */ | ||||||
|  | #define I915_FORMAT_MOD_X_TILED	fourcc_mod_code(INTEL, 1) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Intel Y-tiling layout | ||||||
|  |  * | ||||||
|  |  * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb) | ||||||
|  |  * in row-major layout. Within the tile bytes are laid out in OWORD (16 bytes) | ||||||
|  |  * chunks column-major, with a platform-dependent height. On top of that the | ||||||
|  |  * memory can apply platform-depending swizzling of some higher address bits | ||||||
|  |  * into bit6. | ||||||
|  |  * | ||||||
|  |  * This format is highly platforms specific and not useful for cross-driver | ||||||
|  |  * sharing. It exists since on a given platform it does uniquely identify the | ||||||
|  |  * layout in a simple way for i915-specific userspace. | ||||||
|  |  */ | ||||||
|  | #define I915_FORMAT_MOD_Y_TILED	fourcc_mod_code(INTEL, 2) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Intel Yf-tiling layout | ||||||
|  |  * | ||||||
|  |  * This is a tiled layout using 4Kb tiles in row-major layout. | ||||||
|  |  * Within the tile pixels are laid out in 16 256 byte units / sub-tiles which | ||||||
|  |  * are arranged in four groups (two wide, two high) with column-major layout. | ||||||
|  |  * Each group therefore consists out of four 256 byte units, which are also laid | ||||||
|  |  * out as 2x2 column-major. | ||||||
|  |  * 256 byte units are made out of four 64 byte blocks of pixels, producing | ||||||
|  |  * either a square block or a 2:1 unit. | ||||||
|  |  * 64 byte blocks of pixels contain four pixel rows of 16 bytes, where the width | ||||||
|  |  * in pixel depends on the pixel depth. | ||||||
|  |  */ | ||||||
|  | #define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Intel color control surface (CCS) for render compression | ||||||
|  |  * | ||||||
|  |  * The framebuffer format must be one of the 8:8:8:8 RGB formats. | ||||||
|  |  * The main surface will be plane index 0 and must be Y/Yf-tiled, | ||||||
|  |  * the CCS will be plane index 1. | ||||||
|  |  * | ||||||
|  |  * Each CCS tile matches a 1024x512 pixel area of the main surface. | ||||||
|  |  * To match certain aspects of the 3D hardware the CCS is | ||||||
|  |  * considered to be made up of normal 128Bx32 Y tiles, Thus | ||||||
|  |  * the CCS pitch must be specified in multiples of 128 bytes. | ||||||
|  |  * | ||||||
|  |  * In reality the CCS tile appears to be a 64Bx64 Y tile, composed | ||||||
|  |  * of QWORD (8 bytes) chunks instead of OWORD (16 bytes) chunks. | ||||||
|  |  * But that fact is not relevant unless the memory is accessed | ||||||
|  |  * directly. | ||||||
|  |  */ | ||||||
|  | #define I915_FORMAT_MOD_Y_TILED_CCS	fourcc_mod_code(INTEL, 4) | ||||||
|  | #define I915_FORMAT_MOD_Yf_TILED_CCS	fourcc_mod_code(INTEL, 5) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks | ||||||
|  |  * | ||||||
|  |  * Macroblocks are laid in a Z-shape, and each pixel data is following the | ||||||
|  |  * standard NV12 style. | ||||||
|  |  * As for NV12, an image is the result of two frame buffers: one for Y, | ||||||
|  |  * one for the interleaved Cb/Cr components (1/2 the height of the Y buffer). | ||||||
|  |  * Alignment requirements are (for each buffer): | ||||||
|  |  * - multiple of 128 pixels for the width | ||||||
|  |  * - multiple of  32 pixels for the height | ||||||
|  |  * | ||||||
|  |  * For more information: see https://linuxtv.org/downloads/v4l-dvb-apis/re32.html
 | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE	fourcc_mod_code(SAMSUNG, 1) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Tiled, 16 (pixels) x 16 (lines) - sized macroblocks | ||||||
|  |  * | ||||||
|  |  * This is a simple tiled layout using tiles of 16x16 pixels in a row-major | ||||||
|  |  * layout. For YCbCr formats Cb/Cr components are taken in such a way that | ||||||
|  |  * they correspond to their 16x16 luma block. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE	fourcc_mod_code(SAMSUNG, 2) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Qualcomm Compressed Format | ||||||
|  |  * | ||||||
|  |  * Refers to a compressed variant of the base format that is compressed. | ||||||
|  |  * Implementation may be platform and base-format specific. | ||||||
|  |  * | ||||||
|  |  * Each macrotile consists of m x n (mostly 4 x 4) tiles. | ||||||
|  |  * Pixel data pitch/stride is aligned with macrotile width. | ||||||
|  |  * Pixel data height is aligned with macrotile height. | ||||||
|  |  * Entire pixel data buffer is aligned with 4k(bytes). | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1) | ||||||
|  | 
 | ||||||
|  | /* Vivante framebuffer modifiers */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Vivante 4x4 tiling layout | ||||||
|  |  * | ||||||
|  |  * This is a simple tiled layout using tiles of 4x4 pixels in a row-major | ||||||
|  |  * layout. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_VIVANTE_TILED		fourcc_mod_code(VIVANTE, 1) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Vivante 64x64 super-tiling layout | ||||||
|  |  * | ||||||
|  |  * This is a tiled layout using 64x64 pixel super-tiles, where each super-tile | ||||||
|  |  * contains 8x4 groups of 2x4 tiles of 4x4 pixels (like above) each, all in row- | ||||||
|  |  * major layout. | ||||||
|  |  * | ||||||
|  |  * For more information: see | ||||||
|  |  * https://github.com/etnaviv/etna_viv/blob/master/doc/hardware.md#texture-tiling
 | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED	fourcc_mod_code(VIVANTE, 2) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Vivante 4x4 tiling layout for dual-pipe | ||||||
|  |  * | ||||||
|  |  * Same as the 4x4 tiling layout, except every second 4x4 pixel tile starts at a | ||||||
|  |  * different base address. Offsets from the base addresses are therefore halved | ||||||
|  |  * compared to the non-split tiled layout. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED	fourcc_mod_code(VIVANTE, 3) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Vivante 64x64 super-tiling layout for dual-pipe | ||||||
|  |  * | ||||||
|  |  * Same as the 64x64 super-tiling layout, except every second 4x4 pixel tile | ||||||
|  |  * starts at a different base address. Offsets from the base addresses are | ||||||
|  |  * therefore halved compared to the non-split super-tiled layout. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4) | ||||||
|  | 
 | ||||||
|  | /* NVIDIA frame buffer modifiers */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Tegra Tiled Layout, used by Tegra 2, 3 and 4. | ||||||
|  |  * | ||||||
|  |  * Pixels are arranged in simple tiles of 16 x 16 bytes. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED fourcc_mod_code(NVIDIA, 1) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * 16Bx2 Block Linear layout, used by desktop GPUs, and Tegra K1 and later | ||||||
|  |  * | ||||||
|  |  * Pixels are arranged in 64x8 Groups Of Bytes (GOBs). GOBs are then stacked | ||||||
|  |  * vertically by a power of 2 (1 to 32 GOBs) to form a block. | ||||||
|  |  * | ||||||
|  |  * Within a GOB, data is ordered as 16B x 2 lines sectors laid in Z-shape. | ||||||
|  |  * | ||||||
|  |  * Parameter 'v' is the log2 encoding of the number of GOBs stacked vertically. | ||||||
|  |  * Valid values are: | ||||||
|  |  * | ||||||
|  |  * 0 == ONE_GOB | ||||||
|  |  * 1 == TWO_GOBS | ||||||
|  |  * 2 == FOUR_GOBS | ||||||
|  |  * 3 == EIGHT_GOBS | ||||||
|  |  * 4 == SIXTEEN_GOBS | ||||||
|  |  * 5 == THIRTYTWO_GOBS | ||||||
|  |  * | ||||||
|  |  * Chapter 20 "Pixel Memory Formats" of the Tegra X1 TRM describes this format | ||||||
|  |  * in full detail. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(v) \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x10 | ((v) & 0xf)) | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x10) | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x11) | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x12) | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x13) | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x14) | ||||||
|  | #define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB \ | ||||||
|  | 	fourcc_mod_code(NVIDIA, 0x15) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Some Broadcom modifiers take parameters, for example the number of | ||||||
|  |  * vertical lines in the image. Reserve the lower 32 bits for modifier | ||||||
|  |  * type, and the next 24 bits for parameters. Top 8 bits are the | ||||||
|  |  * vendor code. | ||||||
|  |  */ | ||||||
|  | #define __fourcc_mod_broadcom_param_shift 8 | ||||||
|  | #define __fourcc_mod_broadcom_param_bits 48 | ||||||
|  | #define fourcc_mod_broadcom_code(val, params) \ | ||||||
|  | 	fourcc_mod_code(BROADCOM, ((((__u64)params) << __fourcc_mod_broadcom_param_shift) | val)) | ||||||
|  | #define fourcc_mod_broadcom_param(m) \ | ||||||
|  | 	((int)(((m) >> __fourcc_mod_broadcom_param_shift) &	\ | ||||||
|  | 	       ((1ULL << __fourcc_mod_broadcom_param_bits) - 1))) | ||||||
|  | #define fourcc_mod_broadcom_mod(m) \ | ||||||
|  | 	((m) & ~(((1ULL << __fourcc_mod_broadcom_param_bits) - 1) <<	\ | ||||||
|  | 		 __fourcc_mod_broadcom_param_shift)) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Broadcom VC4 "T" format | ||||||
|  |  * | ||||||
|  |  * This is the primary layout that the V3D GPU can texture from (it | ||||||
|  |  * can't do linear).  The T format has: | ||||||
|  |  * | ||||||
|  |  * - 64b utiles of pixels in a raster-order grid according to cpp.  It's 4x4 | ||||||
|  |  *   pixels at 32 bit depth. | ||||||
|  |  * | ||||||
|  |  * - 1k subtiles made of a 4x4 raster-order grid of 64b utiles (so usually | ||||||
|  |  *   16x16 pixels). | ||||||
|  |  * | ||||||
|  |  * - 4k tiles made of a 2x2 grid of 1k subtiles (so usually 32x32 pixels).  On | ||||||
|  |  *   even 4k tile rows, they're arranged as (BL, TL, TR, BR), and on odd rows | ||||||
|  |  *   they're (TR, BR, BL, TL), where bottom left is start of memory. | ||||||
|  |  * | ||||||
|  |  * - an image made of 4k tiles in rows either left-to-right (even rows of 4k | ||||||
|  |  *   tiles) or right-to-left (odd rows of 4k tiles). | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED fourcc_mod_code(BROADCOM, 1) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Broadcom SAND format | ||||||
|  |  * | ||||||
|  |  * This is the native format that the H.264 codec block uses.  For VC4 | ||||||
|  |  * HVS, it is only valid for H.264 (NV12/21) and RGBA modes. | ||||||
|  |  * | ||||||
|  |  * The image can be considered to be split into columns, and the | ||||||
|  |  * columns are placed consecutively into memory.  The width of those | ||||||
|  |  * columns can be either 32, 64, 128, or 256 pixels, but in practice | ||||||
|  |  * only 128 pixel columns are used. | ||||||
|  |  * | ||||||
|  |  * The pitch between the start of each column is set to optimally | ||||||
|  |  * switch between SDRAM banks. This is passed as the number of lines | ||||||
|  |  * of column width in the modifier (we can't use the stride value due | ||||||
|  |  * to various core checks that look at it , so you should set the | ||||||
|  |  * stride to width*cpp). | ||||||
|  |  * | ||||||
|  |  * Note that the column height for this format modifier is the same | ||||||
|  |  * for all of the planes, assuming that each column contains both Y | ||||||
|  |  * and UV.  Some SAND-using hardware stores UV in a separate tiled | ||||||
|  |  * image from Y to reduce the column height, which is not supported | ||||||
|  |  * with these modifiers. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) \ | ||||||
|  | 	fourcc_mod_broadcom_code(2, v) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(v) \ | ||||||
|  | 	fourcc_mod_broadcom_code(3, v) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(v) \ | ||||||
|  | 	fourcc_mod_broadcom_code(4, v) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(v) \ | ||||||
|  | 	fourcc_mod_broadcom_code(5, v) | ||||||
|  | 
 | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND32 \ | ||||||
|  | 	DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(0) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND64 \ | ||||||
|  | 	DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(0) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND128 \ | ||||||
|  | 	DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(0) | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_SAND256 \ | ||||||
|  | 	DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(0) | ||||||
|  | 
 | ||||||
|  | /* Broadcom UIF format
 | ||||||
|  |  * | ||||||
|  |  * This is the common format for the current Broadcom multimedia | ||||||
|  |  * blocks, including V3D 3.x and newer, newer video codecs, and | ||||||
|  |  * displays. | ||||||
|  |  * | ||||||
|  |  * The image consists of utiles (64b blocks), UIF blocks (2x2 utiles), | ||||||
|  |  * and macroblocks (4x4 UIF blocks).  Those 4x4 UIF block groups are | ||||||
|  |  * stored in columns, with padding between the columns to ensure that | ||||||
|  |  * moving from one column to the next doesn't hit the same SDRAM page | ||||||
|  |  * bank. | ||||||
|  |  * | ||||||
|  |  * To calculate the padding, it is assumed that each hardware block | ||||||
|  |  * and the software driving it knows the platform's SDRAM page size, | ||||||
|  |  * number of banks, and XOR address, and that it's identical between | ||||||
|  |  * all blocks using the format.  This tiling modifier will use XOR as | ||||||
|  |  * necessary to reduce the padding.  If a hardware block can't do XOR, | ||||||
|  |  * the assumption is that a no-XOR tiling modifier will be created. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_BROADCOM_UIF fourcc_mod_code(BROADCOM, 6) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Arm Framebuffer Compression (AFBC) modifiers | ||||||
|  |  * | ||||||
|  |  * AFBC is a proprietary lossless image compression protocol and format. | ||||||
|  |  * It provides fine-grained random access and minimizes the amount of data | ||||||
|  |  * transferred between IP blocks. | ||||||
|  |  * | ||||||
|  |  * AFBC has several features which may be supported and/or used, which are | ||||||
|  |  * represented using bits in the modifier. Not all combinations are valid, | ||||||
|  |  * and different devices or use-cases may support different combinations. | ||||||
|  |  * | ||||||
|  |  * Further information on the use of AFBC modifiers can be found in | ||||||
|  |  * Documentation/gpu/afbc.rst | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode)	fourcc_mod_code(ARM, __afbc_mode) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC superblock size | ||||||
|  |  * | ||||||
|  |  * Indicates the superblock size(s) used for the AFBC buffer. The buffer | ||||||
|  |  * size (in pixels) must be aligned to a multiple of the superblock size. | ||||||
|  |  * Four lowest significant bits(LSBs) are reserved for block size. | ||||||
|  |  * | ||||||
|  |  * Where one superblock size is specified, it applies to all planes of the | ||||||
|  |  * buffer (e.g. 16x16, 32x8). When multiple superblock sizes are specified, | ||||||
|  |  * the first applies to the Luma plane and the second applies to the Chroma | ||||||
|  |  * plane(s). e.g. (32x8_64x4 means 32x8 Luma, with 64x4 Chroma). | ||||||
|  |  * Multiple superblock sizes are only valid for multi-plane YCbCr formats. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK      0xf | ||||||
|  | #define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16     (1ULL) | ||||||
|  | #define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8      (2ULL) | ||||||
|  | #define AFBC_FORMAT_MOD_BLOCK_SIZE_64x4      (3ULL) | ||||||
|  | #define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4 (4ULL) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC lossless colorspace transform | ||||||
|  |  * | ||||||
|  |  * Indicates that the buffer makes use of the AFBC lossless colorspace | ||||||
|  |  * transform. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_YTR     (1ULL <<  4) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC block-split | ||||||
|  |  * | ||||||
|  |  * Indicates that the payload of each superblock is split. The second | ||||||
|  |  * half of the payload is positioned at a predefined offset from the start | ||||||
|  |  * of the superblock payload. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_SPLIT   (1ULL <<  5) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC sparse layout | ||||||
|  |  * | ||||||
|  |  * This flag indicates that the payload of each superblock must be stored at a | ||||||
|  |  * predefined position relative to the other superblocks in the same AFBC | ||||||
|  |  * buffer. This order is the same order used by the header buffer. In this mode | ||||||
|  |  * each superblock is given the same amount of space as an uncompressed | ||||||
|  |  * superblock of the particular format would require, rounding up to the next | ||||||
|  |  * multiple of 128 bytes in size. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_SPARSE  (1ULL <<  6) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC copy-block restrict | ||||||
|  |  * | ||||||
|  |  * Buffers with this flag must obey the copy-block restriction. The restriction | ||||||
|  |  * is such that there are no copy-blocks referring across the border of 8x8 | ||||||
|  |  * blocks. For the subsampled data the 8x8 limitation is also subsampled. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_CBR     (1ULL <<  7) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC tiled layout | ||||||
|  |  * | ||||||
|  |  * The tiled layout groups superblocks in 8x8 or 4x4 tiles, where all | ||||||
|  |  * superblocks inside a tile are stored together in memory. 8x8 tiles are used | ||||||
|  |  * for pixel formats up to and including 32 bpp while 4x4 tiles are used for | ||||||
|  |  * larger bpp formats. The order between the tiles is scan line. | ||||||
|  |  * When the tiled layout is used, the buffer size (in pixels) must be aligned | ||||||
|  |  * to the tile size. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_TILED   (1ULL <<  8) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC solid color blocks | ||||||
|  |  * | ||||||
|  |  * Indicates that the buffer makes use of solid-color blocks, whereby bandwidth | ||||||
|  |  * can be reduced if a whole superblock is a single color. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_SC      (1ULL <<  9) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC double-buffer | ||||||
|  |  * | ||||||
|  |  * Indicates that the buffer is allocated in a layout safe for front-buffer | ||||||
|  |  * rendering. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_DB      (1ULL << 10) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * AFBC buffer content hints | ||||||
|  |  * | ||||||
|  |  * Indicates that the buffer includes per-superblock content hints. | ||||||
|  |  */ | ||||||
|  | #define AFBC_FORMAT_MOD_BCH     (1ULL << 11) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Allwinner tiled modifier | ||||||
|  |  * | ||||||
|  |  * This tiling mode is implemented by the VPU found on all Allwinner platforms, | ||||||
|  |  * codenamed sunxi. It is associated with a YUV format that uses either 2 or 3 | ||||||
|  |  * planes. | ||||||
|  |  * | ||||||
|  |  * With this tiling, the luminance samples are disposed in tiles representing | ||||||
|  |  * 32x32 pixels and the chrominance samples in tiles representing 32x64 pixels. | ||||||
|  |  * The pixel order in each tile is linear and the tiles are disposed linearly, | ||||||
|  |  * both in row-major order. | ||||||
|  |  */ | ||||||
|  | #define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1) | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* DRM_FOURCC_H */ | ||||||
							
								
								
									
										914
									
								
								libs/common/drm/include/libdrm/drm_mode.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										914
									
								
								libs/common/drm/include/libdrm/drm_mode.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,914 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2007 Dave Airlie <airlied@linux.ie> | ||||||
|  |  * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com> | ||||||
|  |  * Copyright (c) 2008 Red Hat Inc. | ||||||
|  |  * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA | ||||||
|  |  * Copyright (c) 2007-2008 Intel Corporation | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||||
|  |  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||||
|  |  * IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _DRM_MODE_H | ||||||
|  | #define _DRM_MODE_H | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define DRM_CONNECTOR_NAME_LEN	32 | ||||||
|  | #define DRM_DISPLAY_MODE_LEN	32 | ||||||
|  | #define DRM_PROP_NAME_LEN	32 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_TYPE_BUILTIN	(1<<0) /* deprecated */ | ||||||
|  | #define DRM_MODE_TYPE_CLOCK_C	((1<<1) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ | ||||||
|  | #define DRM_MODE_TYPE_CRTC_C	((1<<2) | DRM_MODE_TYPE_BUILTIN) /* deprecated */ | ||||||
|  | #define DRM_MODE_TYPE_PREFERRED	(1<<3) | ||||||
|  | #define DRM_MODE_TYPE_DEFAULT	(1<<4) /* deprecated */ | ||||||
|  | #define DRM_MODE_TYPE_USERDEF	(1<<5) | ||||||
|  | #define DRM_MODE_TYPE_DRIVER	(1<<6) | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_TYPE_ALL	(DRM_MODE_TYPE_PREFERRED |	\ | ||||||
|  | 				 DRM_MODE_TYPE_USERDEF |	\ | ||||||
|  | 				 DRM_MODE_TYPE_DRIVER) | ||||||
|  | 
 | ||||||
|  | /* Video mode flags */ | ||||||
|  | /* bit compatible with the xrandr RR_ definitions (bits 0-13)
 | ||||||
|  |  * | ||||||
|  |  * ABI warning: Existing userspace really expects | ||||||
|  |  * the mode flags to match the xrandr definitions. Any | ||||||
|  |  * changes that don't match the xrandr definitions will | ||||||
|  |  * likely need a new client cap or some other mechanism | ||||||
|  |  * to avoid breaking existing userspace. This includes | ||||||
|  |  * allocating new flags in the previously unused bits! | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_FLAG_PHSYNC			(1<<0) | ||||||
|  | #define DRM_MODE_FLAG_NHSYNC			(1<<1) | ||||||
|  | #define DRM_MODE_FLAG_PVSYNC			(1<<2) | ||||||
|  | #define DRM_MODE_FLAG_NVSYNC			(1<<3) | ||||||
|  | #define DRM_MODE_FLAG_INTERLACE			(1<<4) | ||||||
|  | #define DRM_MODE_FLAG_DBLSCAN			(1<<5) | ||||||
|  | #define DRM_MODE_FLAG_CSYNC			(1<<6) | ||||||
|  | #define DRM_MODE_FLAG_PCSYNC			(1<<7) | ||||||
|  | #define DRM_MODE_FLAG_NCSYNC			(1<<8) | ||||||
|  | #define DRM_MODE_FLAG_HSKEW			(1<<9) /* hskew provided */ | ||||||
|  | #define DRM_MODE_FLAG_BCAST			(1<<10) /* deprecated */ | ||||||
|  | #define DRM_MODE_FLAG_PIXMUX			(1<<11) /* deprecated */ | ||||||
|  | #define DRM_MODE_FLAG_DBLCLK			(1<<12) | ||||||
|  | #define DRM_MODE_FLAG_CLKDIV2			(1<<13) | ||||||
|  |  /*
 | ||||||
|  |   * When adding a new stereo mode don't forget to adjust DRM_MODE_FLAGS_3D_MAX | ||||||
|  |   * (define not exposed to user space). | ||||||
|  |   */ | ||||||
|  | #define DRM_MODE_FLAG_3D_MASK			(0x1f<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_NONE		(0<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_FRAME_PACKING		(1<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE	(2<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_LINE_ALTERNATIVE	(3<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL	(4<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_L_DEPTH		(5<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH	(6<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_TOP_AND_BOTTOM	(7<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF	(8<<14) | ||||||
|  | 
 | ||||||
|  | /* Picture aspect ratio options */ | ||||||
|  | #define DRM_MODE_PICTURE_ASPECT_NONE		0 | ||||||
|  | #define DRM_MODE_PICTURE_ASPECT_4_3		1 | ||||||
|  | #define DRM_MODE_PICTURE_ASPECT_16_9		2 | ||||||
|  | #define DRM_MODE_PICTURE_ASPECT_64_27		3 | ||||||
|  | #define DRM_MODE_PICTURE_ASPECT_256_135		4 | ||||||
|  | 
 | ||||||
|  | /* Content type options */ | ||||||
|  | #define DRM_MODE_CONTENT_TYPE_NO_DATA		0 | ||||||
|  | #define DRM_MODE_CONTENT_TYPE_GRAPHICS		1 | ||||||
|  | #define DRM_MODE_CONTENT_TYPE_PHOTO		2 | ||||||
|  | #define DRM_MODE_CONTENT_TYPE_CINEMA		3 | ||||||
|  | #define DRM_MODE_CONTENT_TYPE_GAME		4 | ||||||
|  | 
 | ||||||
|  | /* Aspect ratio flag bitmask (4 bits 22:19) */ | ||||||
|  | #define DRM_MODE_FLAG_PIC_AR_MASK		(0x0F<<19) | ||||||
|  | #define  DRM_MODE_FLAG_PIC_AR_NONE \ | ||||||
|  | 			(DRM_MODE_PICTURE_ASPECT_NONE<<19) | ||||||
|  | #define  DRM_MODE_FLAG_PIC_AR_4_3 \ | ||||||
|  | 			(DRM_MODE_PICTURE_ASPECT_4_3<<19) | ||||||
|  | #define  DRM_MODE_FLAG_PIC_AR_16_9 \ | ||||||
|  | 			(DRM_MODE_PICTURE_ASPECT_16_9<<19) | ||||||
|  | #define  DRM_MODE_FLAG_PIC_AR_64_27 \ | ||||||
|  | 			(DRM_MODE_PICTURE_ASPECT_64_27<<19) | ||||||
|  | #define  DRM_MODE_FLAG_PIC_AR_256_135 \ | ||||||
|  | 			(DRM_MODE_PICTURE_ASPECT_256_135<<19) | ||||||
|  | 
 | ||||||
|  | #define  DRM_MODE_FLAG_ALL	(DRM_MODE_FLAG_PHSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_NHSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_PVSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_NVSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_INTERLACE |	\ | ||||||
|  | 				 DRM_MODE_FLAG_DBLSCAN |	\ | ||||||
|  | 				 DRM_MODE_FLAG_CSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_PCSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_NCSYNC |		\ | ||||||
|  | 				 DRM_MODE_FLAG_HSKEW |		\ | ||||||
|  | 				 DRM_MODE_FLAG_DBLCLK |		\ | ||||||
|  | 				 DRM_MODE_FLAG_CLKDIV2 |	\ | ||||||
|  | 				 DRM_MODE_FLAG_3D_MASK) | ||||||
|  | 
 | ||||||
|  | /* DPMS flags */ | ||||||
|  | /* bit compatible with the xorg definitions. */ | ||||||
|  | #define DRM_MODE_DPMS_ON	0 | ||||||
|  | #define DRM_MODE_DPMS_STANDBY	1 | ||||||
|  | #define DRM_MODE_DPMS_SUSPEND	2 | ||||||
|  | #define DRM_MODE_DPMS_OFF	3 | ||||||
|  | 
 | ||||||
|  | /* Scaling mode options */ | ||||||
|  | #define DRM_MODE_SCALE_NONE		0 /* Unmodified timing (display or | ||||||
|  | 					     software can still scale) */ | ||||||
|  | #define DRM_MODE_SCALE_FULLSCREEN	1 /* Full screen, ignore aspect */ | ||||||
|  | #define DRM_MODE_SCALE_CENTER		2 /* Centered, no scaling */ | ||||||
|  | #define DRM_MODE_SCALE_ASPECT		3 /* Full screen, preserve aspect */ | ||||||
|  | 
 | ||||||
|  | /* Dithering mode options */ | ||||||
|  | #define DRM_MODE_DITHERING_OFF	0 | ||||||
|  | #define DRM_MODE_DITHERING_ON	1 | ||||||
|  | #define DRM_MODE_DITHERING_AUTO 2 | ||||||
|  | 
 | ||||||
|  | /* Dirty info options */ | ||||||
|  | #define DRM_MODE_DIRTY_OFF      0 | ||||||
|  | #define DRM_MODE_DIRTY_ON       1 | ||||||
|  | #define DRM_MODE_DIRTY_ANNOTATE 2 | ||||||
|  | 
 | ||||||
|  | /* Link Status options */ | ||||||
|  | #define DRM_MODE_LINK_STATUS_GOOD	0 | ||||||
|  | #define DRM_MODE_LINK_STATUS_BAD	1 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * DRM_MODE_ROTATE_<degrees> | ||||||
|  |  * | ||||||
|  |  * Signals that a drm plane is been rotated <degrees> degrees in counter | ||||||
|  |  * clockwise direction. | ||||||
|  |  * | ||||||
|  |  * This define is provided as a convenience, looking up the property id | ||||||
|  |  * using the name->prop id lookup is the preferred method. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_ROTATE_0       (1<<0) | ||||||
|  | #define DRM_MODE_ROTATE_90      (1<<1) | ||||||
|  | #define DRM_MODE_ROTATE_180     (1<<2) | ||||||
|  | #define DRM_MODE_ROTATE_270     (1<<3) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * DRM_MODE_ROTATE_MASK | ||||||
|  |  * | ||||||
|  |  * Bitmask used to look for drm plane rotations. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_ROTATE_MASK (\ | ||||||
|  | 		DRM_MODE_ROTATE_0  | \ | ||||||
|  | 		DRM_MODE_ROTATE_90  | \ | ||||||
|  | 		DRM_MODE_ROTATE_180 | \ | ||||||
|  | 		DRM_MODE_ROTATE_270) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * DRM_MODE_REFLECT_<axis> | ||||||
|  |  * | ||||||
|  |  * Signals that the contents of a drm plane is reflected along the <axis> axis, | ||||||
|  |  * in the same way as mirroring. | ||||||
|  |  * See kerneldoc chapter "Plane Composition Properties" for more details. | ||||||
|  |  * | ||||||
|  |  * This define is provided as a convenience, looking up the property id | ||||||
|  |  * using the name->prop id lookup is the preferred method. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_REFLECT_X      (1<<4) | ||||||
|  | #define DRM_MODE_REFLECT_Y      (1<<5) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * DRM_MODE_REFLECT_MASK | ||||||
|  |  * | ||||||
|  |  * Bitmask used to look for drm plane reflections. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_REFLECT_MASK (\ | ||||||
|  | 		DRM_MODE_REFLECT_X | \ | ||||||
|  | 		DRM_MODE_REFLECT_Y) | ||||||
|  | 
 | ||||||
|  | /* Content Protection Flags */ | ||||||
|  | #define DRM_MODE_CONTENT_PROTECTION_UNDESIRED	0 | ||||||
|  | #define DRM_MODE_CONTENT_PROTECTION_DESIRED     1 | ||||||
|  | #define DRM_MODE_CONTENT_PROTECTION_ENABLED     2 | ||||||
|  | 
 | ||||||
|  | struct drm_mode_modeinfo { | ||||||
|  | 	__u32 clock; | ||||||
|  | 	__u16 hdisplay; | ||||||
|  | 	__u16 hsync_start; | ||||||
|  | 	__u16 hsync_end; | ||||||
|  | 	__u16 htotal; | ||||||
|  | 	__u16 hskew; | ||||||
|  | 	__u16 vdisplay; | ||||||
|  | 	__u16 vsync_start; | ||||||
|  | 	__u16 vsync_end; | ||||||
|  | 	__u16 vtotal; | ||||||
|  | 	__u16 vscan; | ||||||
|  | 
 | ||||||
|  | 	__u32 vrefresh; | ||||||
|  | 
 | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 type; | ||||||
|  | 	char name[DRM_DISPLAY_MODE_LEN]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_card_res { | ||||||
|  | 	__u64 fb_id_ptr; | ||||||
|  | 	__u64 crtc_id_ptr; | ||||||
|  | 	__u64 connector_id_ptr; | ||||||
|  | 	__u64 encoder_id_ptr; | ||||||
|  | 	__u32 count_fbs; | ||||||
|  | 	__u32 count_crtcs; | ||||||
|  | 	__u32 count_connectors; | ||||||
|  | 	__u32 count_encoders; | ||||||
|  | 	__u32 min_width; | ||||||
|  | 	__u32 max_width; | ||||||
|  | 	__u32 min_height; | ||||||
|  | 	__u32 max_height; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_crtc { | ||||||
|  | 	__u64 set_connectors_ptr; | ||||||
|  | 	__u32 count_connectors; | ||||||
|  | 
 | ||||||
|  | 	__u32 crtc_id; /**< Id */ | ||||||
|  | 	__u32 fb_id; /**< Id of framebuffer */ | ||||||
|  | 
 | ||||||
|  | 	__u32 x; /**< x Position on the framebuffer */ | ||||||
|  | 	__u32 y; /**< y Position on the framebuffer */ | ||||||
|  | 
 | ||||||
|  | 	__u32 gamma_size; | ||||||
|  | 	__u32 mode_valid; | ||||||
|  | 	struct drm_mode_modeinfo mode; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_PRESENT_TOP_FIELD	(1<<0) | ||||||
|  | #define DRM_MODE_PRESENT_BOTTOM_FIELD	(1<<1) | ||||||
|  | 
 | ||||||
|  | /* Planes blend with or override other bits on the CRTC */ | ||||||
|  | struct drm_mode_set_plane { | ||||||
|  | 	__u32 plane_id; | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__u32 fb_id; /* fb object contains surface format type */ | ||||||
|  | 	__u32 flags; /* see above flags */ | ||||||
|  | 
 | ||||||
|  | 	/* Signed dest location allows it to be partially off screen */ | ||||||
|  | 	__s32 crtc_x; | ||||||
|  | 	__s32 crtc_y; | ||||||
|  | 	__u32 crtc_w; | ||||||
|  | 	__u32 crtc_h; | ||||||
|  | 
 | ||||||
|  | 	/* Source values are 16.16 fixed point */ | ||||||
|  | 	__u32 src_x; | ||||||
|  | 	__u32 src_y; | ||||||
|  | 	__u32 src_h; | ||||||
|  | 	__u32 src_w; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_plane { | ||||||
|  | 	__u32 plane_id; | ||||||
|  | 
 | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 
 | ||||||
|  | 	__u32 possible_crtcs; | ||||||
|  | 	__u32 gamma_size; | ||||||
|  | 
 | ||||||
|  | 	__u32 count_format_types; | ||||||
|  | 	__u64 format_type_ptr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_plane_res { | ||||||
|  | 	__u64 plane_id_ptr; | ||||||
|  | 	__u32 count_planes; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_ENCODER_NONE	0 | ||||||
|  | #define DRM_MODE_ENCODER_DAC	1 | ||||||
|  | #define DRM_MODE_ENCODER_TMDS	2 | ||||||
|  | #define DRM_MODE_ENCODER_LVDS	3 | ||||||
|  | #define DRM_MODE_ENCODER_TVDAC	4 | ||||||
|  | #define DRM_MODE_ENCODER_VIRTUAL 5 | ||||||
|  | #define DRM_MODE_ENCODER_DSI	6 | ||||||
|  | #define DRM_MODE_ENCODER_DPMST	7 | ||||||
|  | #define DRM_MODE_ENCODER_DPI	8 | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_encoder { | ||||||
|  | 	__u32 encoder_id; | ||||||
|  | 	__u32 encoder_type; | ||||||
|  | 
 | ||||||
|  | 	__u32 crtc_id; /**< Id of crtc */ | ||||||
|  | 
 | ||||||
|  | 	__u32 possible_crtcs; | ||||||
|  | 	__u32 possible_clones; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* This is for connectors with multiple signal types. */ | ||||||
|  | /* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */ | ||||||
|  | enum drm_mode_subconnector { | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_Automatic = 0, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_Unknown = 0, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_DVID = 3, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_DVIA = 4, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_Composite = 5, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_SVIDEO = 6, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_Component = 8, | ||||||
|  | 	DRM_MODE_SUBCONNECTOR_SCART = 9, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_CONNECTOR_Unknown	0 | ||||||
|  | #define DRM_MODE_CONNECTOR_VGA		1 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVII		2 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVID		3 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVIA		4 | ||||||
|  | #define DRM_MODE_CONNECTOR_Composite	5 | ||||||
|  | #define DRM_MODE_CONNECTOR_SVIDEO	6 | ||||||
|  | #define DRM_MODE_CONNECTOR_LVDS		7 | ||||||
|  | #define DRM_MODE_CONNECTOR_Component	8 | ||||||
|  | #define DRM_MODE_CONNECTOR_9PinDIN	9 | ||||||
|  | #define DRM_MODE_CONNECTOR_DisplayPort	10 | ||||||
|  | #define DRM_MODE_CONNECTOR_HDMIA	11 | ||||||
|  | #define DRM_MODE_CONNECTOR_HDMIB	12 | ||||||
|  | #define DRM_MODE_CONNECTOR_TV		13 | ||||||
|  | #define DRM_MODE_CONNECTOR_eDP		14 | ||||||
|  | #define DRM_MODE_CONNECTOR_VIRTUAL      15 | ||||||
|  | #define DRM_MODE_CONNECTOR_DSI		16 | ||||||
|  | #define DRM_MODE_CONNECTOR_DPI		17 | ||||||
|  | #define DRM_MODE_CONNECTOR_WRITEBACK	18 | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_connector { | ||||||
|  | 
 | ||||||
|  | 	__u64 encoders_ptr; | ||||||
|  | 	__u64 modes_ptr; | ||||||
|  | 	__u64 props_ptr; | ||||||
|  | 	__u64 prop_values_ptr; | ||||||
|  | 
 | ||||||
|  | 	__u32 count_modes; | ||||||
|  | 	__u32 count_props; | ||||||
|  | 	__u32 count_encoders; | ||||||
|  | 
 | ||||||
|  | 	__u32 encoder_id; /**< Current Encoder */ | ||||||
|  | 	__u32 connector_id; /**< Id */ | ||||||
|  | 	__u32 connector_type; | ||||||
|  | 	__u32 connector_type_id; | ||||||
|  | 
 | ||||||
|  | 	__u32 connection; | ||||||
|  | 	__u32 mm_width;  /**< width in millimeters */ | ||||||
|  | 	__u32 mm_height; /**< height in millimeters */ | ||||||
|  | 	__u32 subpixel; | ||||||
|  | 
 | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_PROP_PENDING	(1<<0) /* deprecated, do not use */ | ||||||
|  | #define DRM_MODE_PROP_RANGE	(1<<1) | ||||||
|  | #define DRM_MODE_PROP_IMMUTABLE	(1<<2) | ||||||
|  | #define DRM_MODE_PROP_ENUM	(1<<3) /* enumerated type with text strings */ | ||||||
|  | #define DRM_MODE_PROP_BLOB	(1<<4) | ||||||
|  | #define DRM_MODE_PROP_BITMASK	(1<<5) /* bitmask of enumerated types */ | ||||||
|  | 
 | ||||||
|  | /* non-extended types: legacy bitmask, one bit per type: */ | ||||||
|  | #define DRM_MODE_PROP_LEGACY_TYPE  ( \ | ||||||
|  | 		DRM_MODE_PROP_RANGE | \ | ||||||
|  | 		DRM_MODE_PROP_ENUM | \ | ||||||
|  | 		DRM_MODE_PROP_BLOB | \ | ||||||
|  | 		DRM_MODE_PROP_BITMASK) | ||||||
|  | 
 | ||||||
|  | /* extended-types: rather than continue to consume a bit per type,
 | ||||||
|  |  * grab a chunk of the bits to use as integer type id. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_PROP_EXTENDED_TYPE	0x0000ffc0 | ||||||
|  | #define DRM_MODE_PROP_TYPE(n)		((n) << 6) | ||||||
|  | #define DRM_MODE_PROP_OBJECT		DRM_MODE_PROP_TYPE(1) | ||||||
|  | #define DRM_MODE_PROP_SIGNED_RANGE	DRM_MODE_PROP_TYPE(2) | ||||||
|  | 
 | ||||||
|  | /* the PROP_ATOMIC flag is used to hide properties from userspace that
 | ||||||
|  |  * is not aware of atomic properties.  This is mostly to work around | ||||||
|  |  * older userspace (DDX drivers) that read/write each prop they find, | ||||||
|  |  * without being aware that this could be triggering a lengthy modeset. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_PROP_ATOMIC        0x80000000 | ||||||
|  | 
 | ||||||
|  | struct drm_mode_property_enum { | ||||||
|  | 	__u64 value; | ||||||
|  | 	char name[DRM_PROP_NAME_LEN]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_property { | ||||||
|  | 	__u64 values_ptr; /* values and blob lengths */ | ||||||
|  | 	__u64 enum_blob_ptr; /* enum and blob id ptrs */ | ||||||
|  | 
 | ||||||
|  | 	__u32 prop_id; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	char name[DRM_PROP_NAME_LEN]; | ||||||
|  | 
 | ||||||
|  | 	__u32 count_values; | ||||||
|  | 	/* This is only used to count enum values, not blobs. The _blobs is
 | ||||||
|  | 	 * simply because of a historical reason, i.e. backwards compat. */ | ||||||
|  | 	__u32 count_enum_blobs; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_connector_set_property { | ||||||
|  | 	__u64 value; | ||||||
|  | 	__u32 prop_id; | ||||||
|  | 	__u32 connector_id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_OBJECT_CRTC 0xcccccccc | ||||||
|  | #define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0 | ||||||
|  | #define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0 | ||||||
|  | #define DRM_MODE_OBJECT_MODE 0xdededede | ||||||
|  | #define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0 | ||||||
|  | #define DRM_MODE_OBJECT_FB 0xfbfbfbfb | ||||||
|  | #define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb | ||||||
|  | #define DRM_MODE_OBJECT_PLANE 0xeeeeeeee | ||||||
|  | #define DRM_MODE_OBJECT_ANY 0 | ||||||
|  | 
 | ||||||
|  | struct drm_mode_obj_get_properties { | ||||||
|  | 	__u64 props_ptr; | ||||||
|  | 	__u64 prop_values_ptr; | ||||||
|  | 	__u32 count_props; | ||||||
|  | 	__u32 obj_id; | ||||||
|  | 	__u32 obj_type; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_obj_set_property { | ||||||
|  | 	__u64 value; | ||||||
|  | 	__u32 prop_id; | ||||||
|  | 	__u32 obj_id; | ||||||
|  | 	__u32 obj_type; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_get_blob { | ||||||
|  | 	__u32 blob_id; | ||||||
|  | 	__u32 length; | ||||||
|  | 	__u64 data; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_fb_cmd { | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	__u32 pitch; | ||||||
|  | 	__u32 bpp; | ||||||
|  | 	__u32 depth; | ||||||
|  | 	/* driver specific handle */ | ||||||
|  | 	__u32 handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_FB_INTERLACED	(1<<0) /* for interlaced framebuffers */ | ||||||
|  | #define DRM_MODE_FB_MODIFIERS	(1<<1) /* enables ->modifer[] */ | ||||||
|  | 
 | ||||||
|  | struct drm_mode_fb_cmd2 { | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	__u32 pixel_format; /* fourcc code from drm_fourcc.h */ | ||||||
|  | 	__u32 flags; /* see above flags */ | ||||||
|  | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * In case of planar formats, this ioctl allows up to 4 | ||||||
|  | 	 * buffer objects with offsets and pitches per plane. | ||||||
|  | 	 * The pitch and offset order is dictated by the fourcc, | ||||||
|  | 	 * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as:
 | ||||||
|  | 	 * | ||||||
|  | 	 *   YUV 4:2:0 image with a plane of 8 bit Y samples | ||||||
|  | 	 *   followed by an interleaved U/V plane containing | ||||||
|  | 	 *   8 bit 2x2 subsampled colour difference samples. | ||||||
|  | 	 * | ||||||
|  | 	 * So it would consist of Y as offsets[0] and UV as | ||||||
|  | 	 * offsets[1].  Note that offsets[0] will generally | ||||||
|  | 	 * be 0 (but this is not required). | ||||||
|  | 	 * | ||||||
|  | 	 * To accommodate tiled, compressed, etc formats, a | ||||||
|  | 	 * modifier can be specified.  The default value of zero | ||||||
|  | 	 * indicates "native" format as specified by the fourcc. | ||||||
|  | 	 * Vendor specific modifier token.  Note that even though | ||||||
|  | 	 * it looks like we have a modifier per-plane, we in fact | ||||||
|  | 	 * do not. The modifier for each plane must be identical. | ||||||
|  | 	 * Thus all combinations of different data layouts for | ||||||
|  | 	 * multi plane formats must be enumerated as separate | ||||||
|  | 	 * modifiers. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handles[4]; | ||||||
|  | 	__u32 pitches[4]; /* pitch for each plane */ | ||||||
|  | 	__u32 offsets[4]; /* offset of each plane */ | ||||||
|  | 	__u64 modifier[4]; /* ie, tiling, compress */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01 | ||||||
|  | #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02 | ||||||
|  | #define DRM_MODE_FB_DIRTY_FLAGS         0x03 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_FB_DIRTY_MAX_CLIPS     256 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Mark a region of a framebuffer as dirty. | ||||||
|  |  * | ||||||
|  |  * Some hardware does not automatically update display contents | ||||||
|  |  * as a hardware or software draw to a framebuffer. This ioctl | ||||||
|  |  * allows userspace to tell the kernel and the hardware what | ||||||
|  |  * regions of the framebuffer have changed. | ||||||
|  |  * | ||||||
|  |  * The kernel or hardware is free to update more then just the | ||||||
|  |  * region specified by the clip rects. The kernel or hardware | ||||||
|  |  * may also delay and/or coalesce several calls to dirty into a | ||||||
|  |  * single update. | ||||||
|  |  * | ||||||
|  |  * Userspace may annotate the updates, the annotates are a | ||||||
|  |  * promise made by the caller that the change is either a copy | ||||||
|  |  * of pixels or a fill of a single color in the region specified. | ||||||
|  |  * | ||||||
|  |  * If the DRM_MODE_FB_DIRTY_ANNOTATE_COPY flag is given then | ||||||
|  |  * the number of updated regions are half of num_clips given, | ||||||
|  |  * where the clip rects are paired in src and dst. The width and | ||||||
|  |  * height of each one of the pairs must match. | ||||||
|  |  * | ||||||
|  |  * If the DRM_MODE_FB_DIRTY_ANNOTATE_FILL flag is given the caller | ||||||
|  |  * promises that the region specified of the clip rects is filled | ||||||
|  |  * completely with a single color as given in the color argument. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | struct drm_mode_fb_dirty_cmd { | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 color; | ||||||
|  | 	__u32 num_clips; | ||||||
|  | 	__u64 clips_ptr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_mode_cmd { | ||||||
|  | 	__u32 connector_id; | ||||||
|  | 	struct drm_mode_modeinfo mode; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_CURSOR_BO	0x01 | ||||||
|  | #define DRM_MODE_CURSOR_MOVE	0x02 | ||||||
|  | #define DRM_MODE_CURSOR_FLAGS	0x03 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * depending on the value in flags different members are used. | ||||||
|  |  * | ||||||
|  |  * CURSOR_BO uses | ||||||
|  |  *    crtc_id | ||||||
|  |  *    width | ||||||
|  |  *    height | ||||||
|  |  *    handle - if 0 turns the cursor off | ||||||
|  |  * | ||||||
|  |  * CURSOR_MOVE uses | ||||||
|  |  *    crtc_id | ||||||
|  |  *    x | ||||||
|  |  *    y | ||||||
|  |  */ | ||||||
|  | struct drm_mode_cursor { | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__s32 x; | ||||||
|  | 	__s32 y; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	/* driver specific handle */ | ||||||
|  | 	__u32 handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_cursor2 { | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__s32 x; | ||||||
|  | 	__s32 y; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	/* driver specific handle */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__s32 hot_x; | ||||||
|  | 	__s32 hot_y; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_crtc_lut { | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__u32 gamma_size; | ||||||
|  | 
 | ||||||
|  | 	/* pointers to arrays */ | ||||||
|  | 	__u64 red; | ||||||
|  | 	__u64 green; | ||||||
|  | 	__u64 blue; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_color_ctm { | ||||||
|  | 	/*
 | ||||||
|  | 	 * Conversion matrix in S31.32 sign-magnitude | ||||||
|  | 	 * (not two's complement!) format. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 matrix[9]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_color_lut { | ||||||
|  | 	/*
 | ||||||
|  | 	 * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and | ||||||
|  | 	 * 0xffff == 1.0. | ||||||
|  | 	 */ | ||||||
|  | 	__u16 red; | ||||||
|  | 	__u16 green; | ||||||
|  | 	__u16 blue; | ||||||
|  | 	__u16 reserved; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_PAGE_FLIP_EVENT 0x01 | ||||||
|  | #define DRM_MODE_PAGE_FLIP_ASYNC 0x02 | ||||||
|  | #define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4 | ||||||
|  | #define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8 | ||||||
|  | #define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | \ | ||||||
|  | 				   DRM_MODE_PAGE_FLIP_TARGET_RELATIVE) | ||||||
|  | #define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | \ | ||||||
|  | 				  DRM_MODE_PAGE_FLIP_ASYNC | \ | ||||||
|  | 				  DRM_MODE_PAGE_FLIP_TARGET) | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Request a page flip on the specified crtc. | ||||||
|  |  * | ||||||
|  |  * This ioctl will ask KMS to schedule a page flip for the specified | ||||||
|  |  * crtc.  Once any pending rendering targeting the specified fb (as of | ||||||
|  |  * ioctl time) has completed, the crtc will be reprogrammed to display | ||||||
|  |  * that fb after the next vertical refresh.  The ioctl returns | ||||||
|  |  * immediately, but subsequent rendering to the current fb will block | ||||||
|  |  * in the execbuffer ioctl until the page flip happens.  If a page | ||||||
|  |  * flip is already pending as the ioctl is called, EBUSY will be | ||||||
|  |  * returned. | ||||||
|  |  * | ||||||
|  |  * Flag DRM_MODE_PAGE_FLIP_EVENT requests that drm sends back a vblank | ||||||
|  |  * event (see drm.h: struct drm_event_vblank) when the page flip is | ||||||
|  |  * done.  The user_data field passed in with this ioctl will be | ||||||
|  |  * returned as the user_data field in the vblank event struct. | ||||||
|  |  * | ||||||
|  |  * Flag DRM_MODE_PAGE_FLIP_ASYNC requests that the flip happen | ||||||
|  |  * 'as soon as possible', meaning that it not delay waiting for vblank. | ||||||
|  |  * This may cause tearing on the screen. | ||||||
|  |  * | ||||||
|  |  * The reserved field must be zero. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | struct drm_mode_crtc_page_flip { | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 reserved; | ||||||
|  | 	__u64 user_data; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Request a page flip on the specified crtc. | ||||||
|  |  * | ||||||
|  |  * Same as struct drm_mode_crtc_page_flip, but supports new flags and | ||||||
|  |  * re-purposes the reserved field: | ||||||
|  |  * | ||||||
|  |  * The sequence field must be zero unless either of the | ||||||
|  |  * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is specified. When | ||||||
|  |  * the ABSOLUTE flag is specified, the sequence field denotes the absolute | ||||||
|  |  * vblank sequence when the flip should take effect. When the RELATIVE | ||||||
|  |  * flag is specified, the sequence field denotes the relative (to the | ||||||
|  |  * current one when the ioctl is called) vblank sequence when the flip | ||||||
|  |  * should take effect. NOTE: DRM_IOCTL_WAIT_VBLANK must still be used to | ||||||
|  |  * make sure the vblank sequence before the target one has passed before | ||||||
|  |  * calling this ioctl. The purpose of the | ||||||
|  |  * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is merely to clarify | ||||||
|  |  * the target for when code dealing with a page flip runs during a | ||||||
|  |  * vertical blank period. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | struct drm_mode_crtc_page_flip_target { | ||||||
|  | 	__u32 crtc_id; | ||||||
|  | 	__u32 fb_id; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 sequence; | ||||||
|  | 	__u64 user_data; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* create a dumb scanout buffer */ | ||||||
|  | struct drm_mode_create_dumb { | ||||||
|  | 	__u32 height; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 bpp; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	/* handle, pitch, size will be returned */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pitch; | ||||||
|  | 	__u64 size; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* set up for mmap of a dumb scanout buffer */ | ||||||
|  | struct drm_mode_map_dumb { | ||||||
|  | 	/** Handle for the object being mapped. */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | 	/**
 | ||||||
|  | 	 * Fake offset to use for subsequent mmap call | ||||||
|  | 	 * | ||||||
|  | 	 * This is a fixed-size type for 32/64 compatibility. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_mode_destroy_dumb { | ||||||
|  | 	__u32 handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* page-flip flags are valid, plus: */ | ||||||
|  | #define DRM_MODE_ATOMIC_TEST_ONLY 0x0100 | ||||||
|  | #define DRM_MODE_ATOMIC_NONBLOCK  0x0200 | ||||||
|  | #define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_ATOMIC_FLAGS (\ | ||||||
|  | 		DRM_MODE_PAGE_FLIP_EVENT |\ | ||||||
|  | 		DRM_MODE_PAGE_FLIP_ASYNC |\ | ||||||
|  | 		DRM_MODE_ATOMIC_TEST_ONLY |\ | ||||||
|  | 		DRM_MODE_ATOMIC_NONBLOCK |\ | ||||||
|  | 		DRM_MODE_ATOMIC_ALLOW_MODESET) | ||||||
|  | 
 | ||||||
|  | struct drm_mode_atomic { | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 count_objs; | ||||||
|  | 	__u64 objs_ptr; | ||||||
|  | 	__u64 count_props_ptr; | ||||||
|  | 	__u64 props_ptr; | ||||||
|  | 	__u64 prop_values_ptr; | ||||||
|  | 	__u64 reserved; | ||||||
|  | 	__u64 user_data; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_format_modifier_blob { | ||||||
|  | #define FORMAT_BLOB_CURRENT 1 | ||||||
|  | 	/* Version of this blob format */ | ||||||
|  | 	__u32 version; | ||||||
|  | 
 | ||||||
|  | 	/* Flags */ | ||||||
|  | 	__u32 flags; | ||||||
|  | 
 | ||||||
|  | 	/* Number of fourcc formats supported */ | ||||||
|  | 	__u32 count_formats; | ||||||
|  | 
 | ||||||
|  | 	/* Where in this blob the formats exist (in bytes) */ | ||||||
|  | 	__u32 formats_offset; | ||||||
|  | 
 | ||||||
|  | 	/* Number of drm_format_modifiers */ | ||||||
|  | 	__u32 count_modifiers; | ||||||
|  | 
 | ||||||
|  | 	/* Where in this blob the modifiers exist (in bytes) */ | ||||||
|  | 	__u32 modifiers_offset; | ||||||
|  | 
 | ||||||
|  | 	/* __u32 formats[] */ | ||||||
|  | 	/* struct drm_format_modifier modifiers[] */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_format_modifier { | ||||||
|  | 	/* Bitmask of formats in get_plane format list this info applies to. The
 | ||||||
|  | 	 * offset allows a sliding window of which 64 formats (bits). | ||||||
|  | 	 * | ||||||
|  | 	 * Some examples: | ||||||
|  | 	 * In today's world with < 65 formats, and formats 0, and 2 are | ||||||
|  | 	 * supported | ||||||
|  | 	 * 0x0000000000000005 | ||||||
|  | 	 *		  ^-offset = 0, formats = 5 | ||||||
|  | 	 * | ||||||
|  | 	 * If the number formats grew to 128, and formats 98-102 are | ||||||
|  | 	 * supported with the modifier: | ||||||
|  | 	 * | ||||||
|  | 	 * 0x0000007c00000000 0000000000000000 | ||||||
|  | 	 *		  ^ | ||||||
|  | 	 *		  |__offset = 64, formats = 0x7c00000000 | ||||||
|  | 	 * | ||||||
|  | 	 */ | ||||||
|  | 	__u64 formats; | ||||||
|  | 	__u32 offset; | ||||||
|  | 	__u32 pad; | ||||||
|  | 
 | ||||||
|  | 	/* The modifier that applies to the >get_plane format list bitmask. */ | ||||||
|  | 	__u64 modifier; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Create a new 'blob' data property, copying length bytes from data pointer, | ||||||
|  |  * and returning new blob ID. | ||||||
|  |  */ | ||||||
|  | struct drm_mode_create_blob { | ||||||
|  | 	/** Pointer to data to copy. */ | ||||||
|  | 	__u64 data; | ||||||
|  | 	/** Length of data to copy. */ | ||||||
|  | 	__u32 length; | ||||||
|  | 	/** Return: new property ID. */ | ||||||
|  | 	__u32 blob_id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Destroy a user-created blob property. | ||||||
|  |  */ | ||||||
|  | struct drm_mode_destroy_blob { | ||||||
|  | 	__u32 blob_id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Lease mode resources, creating another drm_master. | ||||||
|  |  */ | ||||||
|  | struct drm_mode_create_lease { | ||||||
|  | 	/** Pointer to array of object ids (__u32) */ | ||||||
|  | 	__u64 object_ids; | ||||||
|  | 	/** Number of object ids */ | ||||||
|  | 	__u32 object_count; | ||||||
|  | 	/** flags for new FD (O_CLOEXEC, etc) */ | ||||||
|  | 	__u32 flags; | ||||||
|  | 
 | ||||||
|  | 	/** Return: unique identifier for lessee. */ | ||||||
|  | 	__u32 lessee_id; | ||||||
|  | 	/** Return: file descriptor to new drm_master file */ | ||||||
|  | 	__u32 fd; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * List lesses from a drm_master | ||||||
|  |  */ | ||||||
|  | struct drm_mode_list_lessees { | ||||||
|  | 	/** Number of lessees.
 | ||||||
|  | 	 * On input, provides length of the array. | ||||||
|  | 	 * On output, provides total number. No | ||||||
|  | 	 * more than the input number will be written | ||||||
|  | 	 * back, so two calls can be used to get | ||||||
|  | 	 * the size and then the data. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 count_lessees; | ||||||
|  | 	__u32 pad; | ||||||
|  | 
 | ||||||
|  | 	/** Pointer to lessees.
 | ||||||
|  | 	 * pointer to __u64 array of lessee ids | ||||||
|  | 	 */ | ||||||
|  | 	__u64 lessees_ptr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Get leased objects | ||||||
|  |  */ | ||||||
|  | struct drm_mode_get_lease { | ||||||
|  | 	/** Number of leased objects.
 | ||||||
|  | 	 * On input, provides length of the array. | ||||||
|  | 	 * On output, provides total number. No | ||||||
|  | 	 * more than the input number will be written | ||||||
|  | 	 * back, so two calls can be used to get | ||||||
|  | 	 * the size and then the data. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 count_objects; | ||||||
|  | 	__u32 pad; | ||||||
|  | 
 | ||||||
|  | 	/** Pointer to objects.
 | ||||||
|  | 	 * pointer to __u32 array of object ids | ||||||
|  | 	 */ | ||||||
|  | 	__u64 objects_ptr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Revoke lease | ||||||
|  |  */ | ||||||
|  | struct drm_mode_revoke_lease { | ||||||
|  | 	/** Unique ID of lessee
 | ||||||
|  | 	 */ | ||||||
|  | 	__u32 lessee_id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_mode_rect - Two dimensional rectangle. | ||||||
|  |  * @x1: Horizontal starting coordinate (inclusive). | ||||||
|  |  * @y1: Vertical starting coordinate (inclusive). | ||||||
|  |  * @x2: Horizontal ending coordinate (exclusive). | ||||||
|  |  * @y2: Vertical ending coordinate (exclusive). | ||||||
|  |  * | ||||||
|  |  * With drm subsystem using struct drm_rect to manage rectangular area this | ||||||
|  |  * export it to user-space. | ||||||
|  |  * | ||||||
|  |  * Currently used by drm_mode_atomic blob property FB_DAMAGE_CLIPS. | ||||||
|  |  */ | ||||||
|  | struct drm_mode_rect { | ||||||
|  | 	__s32 x1; | ||||||
|  | 	__s32 y1; | ||||||
|  | 	__s32 x2; | ||||||
|  | 	__s32 y2; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										92
									
								
								libs/common/drm/include/libdrm/drm_sarea.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								libs/common/drm/include/libdrm/drm_sarea.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,92 @@ | |||||||
|  | /**
 | ||||||
|  |  * \file drm_sarea.h | ||||||
|  |  * \brief SAREA definitions | ||||||
|  |  * | ||||||
|  |  * \author Michel Dänzer <michel@daenzer.net> | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _DRM_SAREA_H_ | ||||||
|  | #define _DRM_SAREA_H_ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* SAREA area needs to be at least a page */ | ||||||
|  | #if defined(__alpha__) | ||||||
|  | #define SAREA_MAX                       0x2000U | ||||||
|  | #elif defined(__mips__) | ||||||
|  | #define SAREA_MAX                       0x4000U | ||||||
|  | #elif defined(__ia64__) | ||||||
|  | #define SAREA_MAX                       0x10000U	/* 64kB */ | ||||||
|  | #else | ||||||
|  | /* Intel 830M driver needs at least 8k SAREA */ | ||||||
|  | #define SAREA_MAX                       0x2000U | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /** Maximum number of drawables in the SAREA */ | ||||||
|  | #define SAREA_MAX_DRAWABLES		256 | ||||||
|  | 
 | ||||||
|  | #define SAREA_DRAWABLE_CLAIMED_ENTRY    0x80000000 | ||||||
|  | 
 | ||||||
|  | /** SAREA drawable */ | ||||||
|  | struct drm_sarea_drawable { | ||||||
|  | 	unsigned int stamp; | ||||||
|  | 	unsigned int flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** SAREA frame */ | ||||||
|  | struct drm_sarea_frame { | ||||||
|  | 	unsigned int x; | ||||||
|  | 	unsigned int y; | ||||||
|  | 	unsigned int width; | ||||||
|  | 	unsigned int height; | ||||||
|  | 	unsigned int fullscreen; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** SAREA */ | ||||||
|  | struct drm_sarea { | ||||||
|  |     /** first thing is always the DRM locking structure */ | ||||||
|  | 	struct drm_hw_lock lock; | ||||||
|  |     /** \todo Use readers/writer lock for drm_sarea::drawable_lock */ | ||||||
|  | 	struct drm_hw_lock drawable_lock; | ||||||
|  | 	struct drm_sarea_drawable drawableTable[SAREA_MAX_DRAWABLES];	/**< drawables */ | ||||||
|  | 	struct drm_sarea_frame frame;	/**< frame */ | ||||||
|  | 	drm_context_t dummy_context; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_sarea_drawable drm_sarea_drawable_t; | ||||||
|  | typedef struct drm_sarea_frame drm_sarea_frame_t; | ||||||
|  | typedef struct drm_sarea drm_sarea_t; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif				/* _DRM_SAREA_H_ */ | ||||||
							
								
								
									
										1915
									
								
								libs/common/drm/include/libdrm/i915_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1915
									
								
								libs/common/drm/include/libdrm/i915_drm.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										256
									
								
								libs/common/drm/include/libdrm/mach64_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								libs/common/drm/include/libdrm/mach64_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,256 @@ | |||||||
|  | /* mach64_drm.h -- Public header for the mach64 driver -*- linux-c -*-
 | ||||||
|  |  * Created: Thu Nov 30 20:04:32 2000 by gareth@valinux.com | ||||||
|  |  */ | ||||||
|  | /*
 | ||||||
|  |  * Copyright 2000 Gareth Hughes | ||||||
|  |  * Copyright 2002 Frank C. Earl | ||||||
|  |  * Copyright 2002-2003 Leif Delgass | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE COPYRIGHT OWNER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||||||
|  |  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||||||
|  |  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * Authors: | ||||||
|  |  *    Gareth Hughes <gareth@valinux.com> | ||||||
|  |  *    Frank C. Earl <fearl@airmail.net> | ||||||
|  |  *    Leif Delgass <ldelgass@retinalburn.net> | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __MACH64_DRM_H__ | ||||||
|  | #define __MACH64_DRM_H__ | ||||||
|  | 
 | ||||||
|  | /* WARNING: If you change any of these defines, make sure to change the
 | ||||||
|  |  * defines in the Xserver file (mach64_sarea.h) | ||||||
|  |  */ | ||||||
|  | #ifndef __MACH64_SAREA_DEFINES__ | ||||||
|  | #define __MACH64_SAREA_DEFINES__ | ||||||
|  | 
 | ||||||
|  | /* What needs to be changed for the current vertex buffer?
 | ||||||
|  |  * GH: We're going to be pedantic about this.  We want the card to do as | ||||||
|  |  * little as possible, so let's avoid having it fetch a whole bunch of | ||||||
|  |  * register values that don't change all that often, if at all. | ||||||
|  |  */ | ||||||
|  | #define MACH64_UPLOAD_DST_OFF_PITCH	0x0001 | ||||||
|  | #define MACH64_UPLOAD_Z_OFF_PITCH	0x0002 | ||||||
|  | #define MACH64_UPLOAD_Z_ALPHA_CNTL	0x0004 | ||||||
|  | #define MACH64_UPLOAD_SCALE_3D_CNTL	0x0008 | ||||||
|  | #define MACH64_UPLOAD_DP_FOG_CLR	0x0010 | ||||||
|  | #define MACH64_UPLOAD_DP_WRITE_MASK	0x0020 | ||||||
|  | #define MACH64_UPLOAD_DP_PIX_WIDTH	0x0040 | ||||||
|  | #define MACH64_UPLOAD_SETUP_CNTL	0x0080 | ||||||
|  | #define MACH64_UPLOAD_MISC		0x0100 | ||||||
|  | #define MACH64_UPLOAD_TEXTURE		0x0200 | ||||||
|  | #define MACH64_UPLOAD_TEX0IMAGE		0x0400 | ||||||
|  | #define MACH64_UPLOAD_TEX1IMAGE		0x0800 | ||||||
|  | #define MACH64_UPLOAD_CLIPRECTS		0x1000	/* handled client-side */ | ||||||
|  | #define MACH64_UPLOAD_CONTEXT		0x00ff | ||||||
|  | #define MACH64_UPLOAD_ALL		0x1fff | ||||||
|  | 
 | ||||||
|  | /* DMA buffer size
 | ||||||
|  |  */ | ||||||
|  | #define MACH64_BUFFER_SIZE		16384 | ||||||
|  | 
 | ||||||
|  | /* Max number of swaps allowed on the ring
 | ||||||
|  |  * before the client must wait | ||||||
|  |  */ | ||||||
|  | #define MACH64_MAX_QUEUED_FRAMES        3U | ||||||
|  | 
 | ||||||
|  | /* Byte offsets for host blit buffer data
 | ||||||
|  |  */ | ||||||
|  | #define MACH64_HOSTDATA_BLIT_OFFSET	104 | ||||||
|  | 
 | ||||||
|  | /* Keep these small for testing.
 | ||||||
|  |  */ | ||||||
|  | #define MACH64_NR_SAREA_CLIPRECTS	8 | ||||||
|  | 
 | ||||||
|  | #define MACH64_CARD_HEAP		0 | ||||||
|  | #define MACH64_AGP_HEAP			1 | ||||||
|  | #define MACH64_NR_TEX_HEAPS		2 | ||||||
|  | #define MACH64_NR_TEX_REGIONS		64 | ||||||
|  | #define MACH64_LOG_TEX_GRANULARITY	16 | ||||||
|  | 
 | ||||||
|  | #define MACH64_TEX_MAXLEVELS		1 | ||||||
|  | 
 | ||||||
|  | #define MACH64_NR_CONTEXT_REGS		15 | ||||||
|  | #define MACH64_NR_TEXTURE_REGS		4 | ||||||
|  | 
 | ||||||
|  | #endif				/* __MACH64_SAREA_DEFINES__ */ | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int dst_off_pitch; | ||||||
|  | 
 | ||||||
|  | 	unsigned int z_off_pitch; | ||||||
|  | 	unsigned int z_cntl; | ||||||
|  | 	unsigned int alpha_tst_cntl; | ||||||
|  | 
 | ||||||
|  | 	unsigned int scale_3d_cntl; | ||||||
|  | 
 | ||||||
|  | 	unsigned int sc_left_right; | ||||||
|  | 	unsigned int sc_top_bottom; | ||||||
|  | 
 | ||||||
|  | 	unsigned int dp_fog_clr; | ||||||
|  | 	unsigned int dp_write_mask; | ||||||
|  | 	unsigned int dp_pix_width; | ||||||
|  | 	unsigned int dp_mix; | ||||||
|  | 	unsigned int dp_src; | ||||||
|  | 
 | ||||||
|  | 	unsigned int clr_cmp_cntl; | ||||||
|  | 	unsigned int gui_traj_cntl; | ||||||
|  | 
 | ||||||
|  | 	unsigned int setup_cntl; | ||||||
|  | 
 | ||||||
|  | 	unsigned int tex_size_pitch; | ||||||
|  | 	unsigned int tex_cntl; | ||||||
|  | 	unsigned int secondary_tex_off; | ||||||
|  | 	unsigned int tex_offset; | ||||||
|  | } drm_mach64_context_regs_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_sarea { | ||||||
|  | 	/* The channel for communication of state information to the kernel
 | ||||||
|  | 	 * on firing a vertex dma buffer. | ||||||
|  | 	 */ | ||||||
|  | 	drm_mach64_context_regs_t context_state; | ||||||
|  | 	unsigned int dirty; | ||||||
|  | 	unsigned int vertsize; | ||||||
|  | 
 | ||||||
|  | 	/* The current cliprects, or a subset thereof.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_clip_rect boxes[MACH64_NR_SAREA_CLIPRECTS]; | ||||||
|  | 	unsigned int nbox; | ||||||
|  | 
 | ||||||
|  | 	/* Counters for client-side throttling of rendering clients.
 | ||||||
|  | 	 */ | ||||||
|  | 	unsigned int frames_queued; | ||||||
|  | 
 | ||||||
|  | 	/* Texture memory LRU.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_tex_region tex_list[MACH64_NR_TEX_HEAPS][MACH64_NR_TEX_REGIONS + | ||||||
|  | 						       1]; | ||||||
|  | 	unsigned int tex_age[MACH64_NR_TEX_HEAPS]; | ||||||
|  | 	int ctx_owner; | ||||||
|  | } drm_mach64_sarea_t; | ||||||
|  | 
 | ||||||
|  | /* WARNING: If you change any of these defines, make sure to change the
 | ||||||
|  |  * defines in the Xserver file (mach64_common.h) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Mach64 specific ioctls
 | ||||||
|  |  * The device specific ioctl range is 0x40 to 0x79. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define DRM_MACH64_INIT           0x00 | ||||||
|  | #define DRM_MACH64_IDLE           0x01 | ||||||
|  | #define DRM_MACH64_RESET          0x02 | ||||||
|  | #define DRM_MACH64_SWAP           0x03 | ||||||
|  | #define DRM_MACH64_CLEAR          0x04 | ||||||
|  | #define DRM_MACH64_VERTEX         0x05 | ||||||
|  | #define DRM_MACH64_BLIT           0x06 | ||||||
|  | #define DRM_MACH64_FLUSH          0x07 | ||||||
|  | #define DRM_MACH64_GETPARAM       0x08 | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_MACH64_INIT           DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_INIT, drm_mach64_init_t) | ||||||
|  | #define DRM_IOCTL_MACH64_IDLE           DRM_IO(  DRM_COMMAND_BASE + DRM_MACH64_IDLE ) | ||||||
|  | #define DRM_IOCTL_MACH64_RESET          DRM_IO(  DRM_COMMAND_BASE + DRM_MACH64_RESET ) | ||||||
|  | #define DRM_IOCTL_MACH64_SWAP           DRM_IO(  DRM_COMMAND_BASE + DRM_MACH64_SWAP ) | ||||||
|  | #define DRM_IOCTL_MACH64_CLEAR          DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_CLEAR, drm_mach64_clear_t) | ||||||
|  | #define DRM_IOCTL_MACH64_VERTEX         DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_VERTEX, drm_mach64_vertex_t) | ||||||
|  | #define DRM_IOCTL_MACH64_BLIT           DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_BLIT, drm_mach64_blit_t) | ||||||
|  | #define DRM_IOCTL_MACH64_FLUSH          DRM_IO(  DRM_COMMAND_BASE + DRM_MACH64_FLUSH ) | ||||||
|  | #define DRM_IOCTL_MACH64_GETPARAM       DRM_IOWR( DRM_COMMAND_BASE + DRM_MACH64_GETPARAM, drm_mach64_getparam_t) | ||||||
|  | 
 | ||||||
|  | /* Buffer flags for clears
 | ||||||
|  |  */ | ||||||
|  | #define MACH64_FRONT			0x1 | ||||||
|  | #define MACH64_BACK			0x2 | ||||||
|  | #define MACH64_DEPTH			0x4 | ||||||
|  | 
 | ||||||
|  | /* Primitive types for vertex buffers
 | ||||||
|  |  */ | ||||||
|  | #define MACH64_PRIM_POINTS		0x00000000 | ||||||
|  | #define MACH64_PRIM_LINES		0x00000001 | ||||||
|  | #define MACH64_PRIM_LINE_LOOP		0x00000002 | ||||||
|  | #define MACH64_PRIM_LINE_STRIP		0x00000003 | ||||||
|  | #define MACH64_PRIM_TRIANGLES		0x00000004 | ||||||
|  | #define MACH64_PRIM_TRIANGLE_STRIP	0x00000005 | ||||||
|  | #define MACH64_PRIM_TRIANGLE_FAN	0x00000006 | ||||||
|  | #define MACH64_PRIM_QUADS		0x00000007 | ||||||
|  | #define MACH64_PRIM_QUAD_STRIP		0x00000008 | ||||||
|  | #define MACH64_PRIM_POLYGON		0x00000009 | ||||||
|  | 
 | ||||||
|  | typedef enum _drm_mach64_dma_mode_t { | ||||||
|  | 	MACH64_MODE_DMA_ASYNC, | ||||||
|  | 	MACH64_MODE_DMA_SYNC, | ||||||
|  | 	MACH64_MODE_MMIO | ||||||
|  | } drm_mach64_dma_mode_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_init { | ||||||
|  | 	enum { | ||||||
|  | 		DRM_MACH64_INIT_DMA = 0x01, | ||||||
|  | 		DRM_MACH64_CLEANUP_DMA = 0x02 | ||||||
|  | 	} func; | ||||||
|  | 
 | ||||||
|  | 	unsigned long sarea_priv_offset; | ||||||
|  | 	int is_pci; | ||||||
|  | 	drm_mach64_dma_mode_t dma_mode; | ||||||
|  | 
 | ||||||
|  | 	unsigned int fb_bpp; | ||||||
|  | 	unsigned int front_offset, front_pitch; | ||||||
|  | 	unsigned int back_offset, back_pitch; | ||||||
|  | 
 | ||||||
|  | 	unsigned int depth_bpp; | ||||||
|  | 	unsigned int depth_offset, depth_pitch; | ||||||
|  | 
 | ||||||
|  | 	unsigned long fb_offset; | ||||||
|  | 	unsigned long mmio_offset; | ||||||
|  | 	unsigned long ring_offset; | ||||||
|  | 	unsigned long buffers_offset; | ||||||
|  | 	unsigned long agp_textures_offset; | ||||||
|  | } drm_mach64_init_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_clear { | ||||||
|  | 	unsigned int flags; | ||||||
|  | 	int x, y, w, h; | ||||||
|  | 	unsigned int clear_color; | ||||||
|  | 	unsigned int clear_depth; | ||||||
|  | } drm_mach64_clear_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_vertex { | ||||||
|  | 	int prim; | ||||||
|  | 	void *buf;		/* Address of vertex buffer */ | ||||||
|  | 	unsigned long used;	/* Number of bytes in buffer */ | ||||||
|  | 	int discard;		/* Client finished with buffer? */ | ||||||
|  | } drm_mach64_vertex_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_blit { | ||||||
|  | 	void *buf; | ||||||
|  | 	int pitch; | ||||||
|  | 	int offset; | ||||||
|  | 	int format; | ||||||
|  | 	unsigned short x, y; | ||||||
|  | 	unsigned short width, height; | ||||||
|  | } drm_mach64_blit_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mach64_getparam { | ||||||
|  | 	enum { | ||||||
|  | 		MACH64_PARAM_FRAMES_QUEUED = 0x01, | ||||||
|  | 		MACH64_PARAM_IRQ_NR = 0x02 | ||||||
|  | 	} param; | ||||||
|  | 	void *value; | ||||||
|  | } drm_mach64_getparam_t; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										427
									
								
								libs/common/drm/include/libdrm/mga_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										427
									
								
								libs/common/drm/include/libdrm/mga_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,427 @@ | |||||||
|  | /* mga_drm.h -- Public header for the Matrox g200/g400 driver -*- linux-c -*-
 | ||||||
|  |  * Created: Tue Jan 25 01:50:01 1999 by jhartmann@precisioninsight.com | ||||||
|  |  * | ||||||
|  |  * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. | ||||||
|  |  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * Authors: | ||||||
|  |  *    Jeff Hartmann <jhartmann@valinux.com> | ||||||
|  |  *    Keith Whitwell <keith@tungstengraphics.com> | ||||||
|  |  * | ||||||
|  |  * Rewritten by: | ||||||
|  |  *    Gareth Hughes <gareth@valinux.com> | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __MGA_DRM_H__ | ||||||
|  | #define __MGA_DRM_H__ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* WARNING: If you change any of these defines, make sure to change the
 | ||||||
|  |  * defines in the Xserver file (mga_sarea.h) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __MGA_SAREA_DEFINES__ | ||||||
|  | #define __MGA_SAREA_DEFINES__ | ||||||
|  | 
 | ||||||
|  | /* WARP pipe flags
 | ||||||
|  |  */ | ||||||
|  | #define MGA_F			0x1	/* fog */ | ||||||
|  | #define MGA_A			0x2	/* alpha */ | ||||||
|  | #define MGA_S			0x4	/* specular */ | ||||||
|  | #define MGA_T2			0x8	/* multitexture */ | ||||||
|  | 
 | ||||||
|  | #define MGA_WARP_TGZ		0 | ||||||
|  | #define MGA_WARP_TGZF		(MGA_F) | ||||||
|  | #define MGA_WARP_TGZA		(MGA_A) | ||||||
|  | #define MGA_WARP_TGZAF		(MGA_F|MGA_A) | ||||||
|  | #define MGA_WARP_TGZS		(MGA_S) | ||||||
|  | #define MGA_WARP_TGZSF		(MGA_S|MGA_F) | ||||||
|  | #define MGA_WARP_TGZSA		(MGA_S|MGA_A) | ||||||
|  | #define MGA_WARP_TGZSAF		(MGA_S|MGA_F|MGA_A) | ||||||
|  | #define MGA_WARP_T2GZ		(MGA_T2) | ||||||
|  | #define MGA_WARP_T2GZF		(MGA_T2|MGA_F) | ||||||
|  | #define MGA_WARP_T2GZA		(MGA_T2|MGA_A) | ||||||
|  | #define MGA_WARP_T2GZAF		(MGA_T2|MGA_A|MGA_F) | ||||||
|  | #define MGA_WARP_T2GZS		(MGA_T2|MGA_S) | ||||||
|  | #define MGA_WARP_T2GZSF		(MGA_T2|MGA_S|MGA_F) | ||||||
|  | #define MGA_WARP_T2GZSA		(MGA_T2|MGA_S|MGA_A) | ||||||
|  | #define MGA_WARP_T2GZSAF	(MGA_T2|MGA_S|MGA_F|MGA_A) | ||||||
|  | 
 | ||||||
|  | #define MGA_MAX_G200_PIPES	8	/* no multitex */ | ||||||
|  | #define MGA_MAX_G400_PIPES	16 | ||||||
|  | #define MGA_MAX_WARP_PIPES	MGA_MAX_G400_PIPES | ||||||
|  | #define MGA_WARP_UCODE_SIZE	32768	/* in bytes */ | ||||||
|  | 
 | ||||||
|  | #define MGA_CARD_TYPE_G200	1 | ||||||
|  | #define MGA_CARD_TYPE_G400	2 | ||||||
|  | #define MGA_CARD_TYPE_G450	3	/* not currently used */ | ||||||
|  | #define MGA_CARD_TYPE_G550	4 | ||||||
|  | 
 | ||||||
|  | #define MGA_FRONT		0x1 | ||||||
|  | #define MGA_BACK		0x2 | ||||||
|  | #define MGA_DEPTH		0x4 | ||||||
|  | 
 | ||||||
|  | /* What needs to be changed for the current vertex dma buffer?
 | ||||||
|  |  */ | ||||||
|  | #define MGA_UPLOAD_CONTEXT	0x1 | ||||||
|  | #define MGA_UPLOAD_TEX0		0x2 | ||||||
|  | #define MGA_UPLOAD_TEX1		0x4 | ||||||
|  | #define MGA_UPLOAD_PIPE		0x8 | ||||||
|  | #define MGA_UPLOAD_TEX0IMAGE	0x10	/* handled client-side */ | ||||||
|  | #define MGA_UPLOAD_TEX1IMAGE	0x20	/* handled client-side */ | ||||||
|  | #define MGA_UPLOAD_2D		0x40 | ||||||
|  | #define MGA_WAIT_AGE		0x80	/* handled client-side */ | ||||||
|  | #define MGA_UPLOAD_CLIPRECTS	0x100	/* handled client-side */ | ||||||
|  | #if 0 | ||||||
|  | #define MGA_DMA_FLUSH		0x200	/* set when someone gets the lock | ||||||
|  | 					   quiescent */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* 32 buffers of 64k each, total 2 meg.
 | ||||||
|  |  */ | ||||||
|  | #define MGA_BUFFER_SIZE		(1 << 16) | ||||||
|  | #define MGA_NUM_BUFFERS		128 | ||||||
|  | 
 | ||||||
|  | /* Keep these small for testing.
 | ||||||
|  |  */ | ||||||
|  | #define MGA_NR_SAREA_CLIPRECTS	8 | ||||||
|  | 
 | ||||||
|  | /* 2 heaps (1 for card, 1 for agp), each divided into up to 128
 | ||||||
|  |  * regions, subject to a minimum region size of (1<<16) == 64k. | ||||||
|  |  * | ||||||
|  |  * Clients may subdivide regions internally, but when sharing between | ||||||
|  |  * clients, the region size is the minimum granularity. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define MGA_CARD_HEAP			0 | ||||||
|  | #define MGA_AGP_HEAP			1 | ||||||
|  | #define MGA_NR_TEX_HEAPS		2 | ||||||
|  | #define MGA_NR_TEX_REGIONS		16 | ||||||
|  | #define MGA_LOG_MIN_TEX_REGION_SIZE	16 | ||||||
|  | 
 | ||||||
|  | #define  DRM_MGA_IDLE_RETRY          2048 | ||||||
|  | 
 | ||||||
|  | #endif				/* __MGA_SAREA_DEFINES__ */ | ||||||
|  | 
 | ||||||
|  | /* Setup registers for 3D context
 | ||||||
|  |  */ | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int dstorg; | ||||||
|  | 	unsigned int maccess; | ||||||
|  | 	unsigned int plnwt; | ||||||
|  | 	unsigned int dwgctl; | ||||||
|  | 	unsigned int alphactrl; | ||||||
|  | 	unsigned int fogcolor; | ||||||
|  | 	unsigned int wflag; | ||||||
|  | 	unsigned int tdualstage0; | ||||||
|  | 	unsigned int tdualstage1; | ||||||
|  | 	unsigned int fcol; | ||||||
|  | 	unsigned int stencil; | ||||||
|  | 	unsigned int stencilctl; | ||||||
|  | } drm_mga_context_regs_t; | ||||||
|  | 
 | ||||||
|  | /* Setup registers for 2D, X server
 | ||||||
|  |  */ | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int pitch; | ||||||
|  | } drm_mga_server_regs_t; | ||||||
|  | 
 | ||||||
|  | /* Setup registers for each texture unit
 | ||||||
|  |  */ | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int texctl; | ||||||
|  | 	unsigned int texctl2; | ||||||
|  | 	unsigned int texfilter; | ||||||
|  | 	unsigned int texbordercol; | ||||||
|  | 	unsigned int texorg; | ||||||
|  | 	unsigned int texwidth; | ||||||
|  | 	unsigned int texheight; | ||||||
|  | 	unsigned int texorg1; | ||||||
|  | 	unsigned int texorg2; | ||||||
|  | 	unsigned int texorg3; | ||||||
|  | 	unsigned int texorg4; | ||||||
|  | } drm_mga_texture_regs_t; | ||||||
|  | 
 | ||||||
|  | /* General aging mechanism
 | ||||||
|  |  */ | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int head;	/* Position of head pointer          */ | ||||||
|  | 	unsigned int wrap;	/* Primary DMA wrap count            */ | ||||||
|  | } drm_mga_age_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_mga_sarea { | ||||||
|  | 	/* The channel for communication of state information to the kernel
 | ||||||
|  | 	 * on firing a vertex dma buffer. | ||||||
|  | 	 */ | ||||||
|  | 	drm_mga_context_regs_t context_state; | ||||||
|  | 	drm_mga_server_regs_t server_state; | ||||||
|  | 	drm_mga_texture_regs_t tex_state[2]; | ||||||
|  | 	unsigned int warp_pipe; | ||||||
|  | 	unsigned int dirty; | ||||||
|  | 	unsigned int vertsize; | ||||||
|  | 
 | ||||||
|  | 	/* The current cliprects, or a subset thereof.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_clip_rect boxes[MGA_NR_SAREA_CLIPRECTS]; | ||||||
|  | 	unsigned int nbox; | ||||||
|  | 
 | ||||||
|  | 	/* Information about the most recently used 3d drawable.  The
 | ||||||
|  | 	 * client fills in the req_* fields, the server fills in the | ||||||
|  | 	 * exported_ fields and puts the cliprects into boxes, above. | ||||||
|  | 	 * | ||||||
|  | 	 * The client clears the exported_drawable field before | ||||||
|  | 	 * clobbering the boxes data. | ||||||
|  | 	 */ | ||||||
|  | 	unsigned int req_drawable;	/* the X drawable id */ | ||||||
|  | 	unsigned int req_draw_buffer;	/* MGA_FRONT or MGA_BACK */ | ||||||
|  | 
 | ||||||
|  | 	unsigned int exported_drawable; | ||||||
|  | 	unsigned int exported_index; | ||||||
|  | 	unsigned int exported_stamp; | ||||||
|  | 	unsigned int exported_buffers; | ||||||
|  | 	unsigned int exported_nfront; | ||||||
|  | 	unsigned int exported_nback; | ||||||
|  | 	int exported_back_x, exported_front_x, exported_w; | ||||||
|  | 	int exported_back_y, exported_front_y, exported_h; | ||||||
|  | 	struct drm_clip_rect exported_boxes[MGA_NR_SAREA_CLIPRECTS]; | ||||||
|  | 
 | ||||||
|  | 	/* Counters for aging textures and for client-side throttling.
 | ||||||
|  | 	 */ | ||||||
|  | 	unsigned int status[4]; | ||||||
|  | 	unsigned int last_wrap; | ||||||
|  | 
 | ||||||
|  | 	drm_mga_age_t last_frame; | ||||||
|  | 	unsigned int last_enqueue;	/* last time a buffer was enqueued */ | ||||||
|  | 	unsigned int last_dispatch;	/* age of the most recently dispatched buffer */ | ||||||
|  | 	unsigned int last_quiescent;	/*  */ | ||||||
|  | 
 | ||||||
|  | 	/* LRU lists for texture memory in agp space and on the card.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_tex_region texList[MGA_NR_TEX_HEAPS][MGA_NR_TEX_REGIONS + 1]; | ||||||
|  | 	unsigned int texAge[MGA_NR_TEX_HEAPS]; | ||||||
|  | 
 | ||||||
|  | 	/* Mechanism to validate card state.
 | ||||||
|  | 	 */ | ||||||
|  | 	int ctxOwner; | ||||||
|  | } drm_mga_sarea_t; | ||||||
|  | 
 | ||||||
|  | /* MGA specific ioctls
 | ||||||
|  |  * The device specific ioctl range is 0x40 to 0x79. | ||||||
|  |  */ | ||||||
|  | #define DRM_MGA_INIT     0x00 | ||||||
|  | #define DRM_MGA_FLUSH    0x01 | ||||||
|  | #define DRM_MGA_RESET    0x02 | ||||||
|  | #define DRM_MGA_SWAP     0x03 | ||||||
|  | #define DRM_MGA_CLEAR    0x04 | ||||||
|  | #define DRM_MGA_VERTEX   0x05 | ||||||
|  | #define DRM_MGA_INDICES  0x06 | ||||||
|  | #define DRM_MGA_ILOAD    0x07 | ||||||
|  | #define DRM_MGA_BLIT     0x08 | ||||||
|  | #define DRM_MGA_GETPARAM 0x09 | ||||||
|  | 
 | ||||||
|  | /* 3.2:
 | ||||||
|  |  * ioctls for operating on fences. | ||||||
|  |  */ | ||||||
|  | #define DRM_MGA_SET_FENCE      0x0a | ||||||
|  | #define DRM_MGA_WAIT_FENCE     0x0b | ||||||
|  | #define DRM_MGA_DMA_BOOTSTRAP  0x0c | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_MGA_INIT     DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t) | ||||||
|  | #define DRM_IOCTL_MGA_FLUSH    DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock) | ||||||
|  | #define DRM_IOCTL_MGA_RESET    DRM_IO(  DRM_COMMAND_BASE + DRM_MGA_RESET) | ||||||
|  | #define DRM_IOCTL_MGA_SWAP     DRM_IO(  DRM_COMMAND_BASE + DRM_MGA_SWAP) | ||||||
|  | #define DRM_IOCTL_MGA_CLEAR    DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t) | ||||||
|  | #define DRM_IOCTL_MGA_VERTEX   DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_VERTEX, drm_mga_vertex_t) | ||||||
|  | #define DRM_IOCTL_MGA_INDICES  DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_INDICES, drm_mga_indices_t) | ||||||
|  | #define DRM_IOCTL_MGA_ILOAD    DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_ILOAD, drm_mga_iload_t) | ||||||
|  | #define DRM_IOCTL_MGA_BLIT     DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_BLIT, drm_mga_blit_t) | ||||||
|  | #define DRM_IOCTL_MGA_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_GETPARAM, drm_mga_getparam_t) | ||||||
|  | #define DRM_IOCTL_MGA_SET_FENCE     DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_SET_FENCE, __u32) | ||||||
|  | #define DRM_IOCTL_MGA_WAIT_FENCE    DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_WAIT_FENCE, __u32) | ||||||
|  | #define DRM_IOCTL_MGA_DMA_BOOTSTRAP DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_DMA_BOOTSTRAP, drm_mga_dma_bootstrap_t) | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_mga_warp_index { | ||||||
|  | 	int installed; | ||||||
|  | 	unsigned long phys_addr; | ||||||
|  | 	int size; | ||||||
|  | } drm_mga_warp_index_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_init { | ||||||
|  | 	enum { | ||||||
|  | 		MGA_INIT_DMA = 0x01, | ||||||
|  | 		MGA_CLEANUP_DMA = 0x02 | ||||||
|  | 	} func; | ||||||
|  | 
 | ||||||
|  | 	unsigned long sarea_priv_offset; | ||||||
|  | 
 | ||||||
|  | 	int chipset; | ||||||
|  | 	int sgram; | ||||||
|  | 
 | ||||||
|  | 	unsigned int maccess; | ||||||
|  | 
 | ||||||
|  | 	unsigned int fb_cpp; | ||||||
|  | 	unsigned int front_offset, front_pitch; | ||||||
|  | 	unsigned int back_offset, back_pitch; | ||||||
|  | 
 | ||||||
|  | 	unsigned int depth_cpp; | ||||||
|  | 	unsigned int depth_offset, depth_pitch; | ||||||
|  | 
 | ||||||
|  | 	unsigned int texture_offset[MGA_NR_TEX_HEAPS]; | ||||||
|  | 	unsigned int texture_size[MGA_NR_TEX_HEAPS]; | ||||||
|  | 
 | ||||||
|  | 	unsigned long fb_offset; | ||||||
|  | 	unsigned long mmio_offset; | ||||||
|  | 	unsigned long status_offset; | ||||||
|  | 	unsigned long warp_offset; | ||||||
|  | 	unsigned long primary_offset; | ||||||
|  | 	unsigned long buffers_offset; | ||||||
|  | } drm_mga_init_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_dma_bootstrap { | ||||||
|  | 	/**
 | ||||||
|  | 	 * \name AGP texture region | ||||||
|  | 	 * | ||||||
|  | 	 * On return from the DRM_MGA_DMA_BOOTSTRAP ioctl, these fields will | ||||||
|  | 	 * be filled in with the actual AGP texture settings. | ||||||
|  | 	 * | ||||||
|  | 	 * \warning | ||||||
|  | 	 * If these fields are non-zero, but dma_mga_dma_bootstrap::agp_mode | ||||||
|  | 	 * is zero, it means that PCI memory (most likely through the use of | ||||||
|  | 	 * an IOMMU) is being used for "AGP" textures. | ||||||
|  | 	 */ | ||||||
|  | 	/*@{ */ | ||||||
|  | 	unsigned long texture_handle; /**< Handle used to map AGP textures. */ | ||||||
|  | 	__u32 texture_size;	      /**< Size of the AGP texture region. */ | ||||||
|  | 	/*@} */ | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * Requested size of the primary DMA region. | ||||||
|  | 	 * | ||||||
|  | 	 * On return from the DRM_MGA_DMA_BOOTSTRAP ioctl, this field will be | ||||||
|  | 	 * filled in with the actual AGP mode.  If AGP was not available | ||||||
|  | 	 */ | ||||||
|  | 	__u32 primary_size; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * Requested number of secondary DMA buffers. | ||||||
|  | 	 * | ||||||
|  | 	 * On return from the DRM_MGA_DMA_BOOTSTRAP ioctl, this field will be | ||||||
|  | 	 * filled in with the actual number of secondary DMA buffers | ||||||
|  | 	 * allocated.  Particularly when PCI DMA is used, this may be | ||||||
|  | 	 * (subtantially) less than the number requested. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 secondary_bin_count; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * Requested size of each secondary DMA buffer. | ||||||
|  | 	 * | ||||||
|  | 	 * While the kernel \b is free to reduce | ||||||
|  | 	 * dma_mga_dma_bootstrap::secondary_bin_count, it is \b not allowed | ||||||
|  | 	 * to reduce dma_mga_dma_bootstrap::secondary_bin_size. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 secondary_bin_size; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * Bit-wise mask of AGPSTAT2_* values.  Currently only \c AGPSTAT2_1X, | ||||||
|  | 	 * \c AGPSTAT2_2X, and \c AGPSTAT2_4X are supported.  If this value is | ||||||
|  | 	 * zero, it means that PCI DMA should be used, even if AGP is | ||||||
|  | 	 * possible. | ||||||
|  | 	 * | ||||||
|  | 	 * On return from the DRM_MGA_DMA_BOOTSTRAP ioctl, this field will be | ||||||
|  | 	 * filled in with the actual AGP mode.  If AGP was not available | ||||||
|  | 	 * (i.e., PCI DMA was used), this value will be zero. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 agp_mode; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * Desired AGP GART size, measured in megabytes. | ||||||
|  | 	 */ | ||||||
|  | 	__u8 agp_size; | ||||||
|  | } drm_mga_dma_bootstrap_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_clear { | ||||||
|  | 	unsigned int flags; | ||||||
|  | 	unsigned int clear_color; | ||||||
|  | 	unsigned int clear_depth; | ||||||
|  | 	unsigned int color_mask; | ||||||
|  | 	unsigned int depth_mask; | ||||||
|  | } drm_mga_clear_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_vertex { | ||||||
|  | 	int idx;		/* buffer to queue */ | ||||||
|  | 	int used;		/* bytes in use */ | ||||||
|  | 	int discard;		/* client finished with buffer?  */ | ||||||
|  | } drm_mga_vertex_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_indices { | ||||||
|  | 	int idx;		/* buffer to queue */ | ||||||
|  | 	unsigned int start; | ||||||
|  | 	unsigned int end; | ||||||
|  | 	int discard;		/* client finished with buffer?  */ | ||||||
|  | } drm_mga_indices_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_iload { | ||||||
|  | 	int idx; | ||||||
|  | 	unsigned int dstorg; | ||||||
|  | 	unsigned int length; | ||||||
|  | } drm_mga_iload_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_mga_blit { | ||||||
|  | 	unsigned int planemask; | ||||||
|  | 	unsigned int srcorg; | ||||||
|  | 	unsigned int dstorg; | ||||||
|  | 	int src_pitch, dst_pitch; | ||||||
|  | 	int delta_sx, delta_sy; | ||||||
|  | 	int delta_dx, delta_dy; | ||||||
|  | 	int height, ydir;	/* flip image vertically */ | ||||||
|  | 	int source_pitch, dest_pitch; | ||||||
|  | } drm_mga_blit_t; | ||||||
|  | 
 | ||||||
|  | /* 3.1: An ioctl to get parameters that aren't available to the 3d
 | ||||||
|  |  * client any other way. | ||||||
|  |  */ | ||||||
|  | #define MGA_PARAM_IRQ_NR            1 | ||||||
|  | 
 | ||||||
|  | /* 3.2: Query the actual card type.  The DDX only distinguishes between
 | ||||||
|  |  * G200 chips and non-G200 chips, which it calls G400.  It turns out that | ||||||
|  |  * there are some very sublte differences between the G4x0 chips and the G550 | ||||||
|  |  * chips.  Using this parameter query, a client-side driver can detect the | ||||||
|  |  * difference between a G4x0 and a G550. | ||||||
|  |  */ | ||||||
|  | #define MGA_PARAM_CARD_TYPE         2 | ||||||
|  | 
 | ||||||
|  | typedef struct drm_mga_getparam { | ||||||
|  | 	int param; | ||||||
|  | 	void *value; | ||||||
|  | } drm_mga_getparam_t; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										221
									
								
								libs/common/drm/include/libdrm/nouveau_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										221
									
								
								libs/common/drm/include/libdrm/nouveau_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,221 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright 2005 Stephane Marchesin. | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __NOUVEAU_DRM_H__ | ||||||
|  | #define __NOUVEAU_DRM_H__ | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_DRM_HEADER_PATCHLEVEL 16 | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_channel_alloc { | ||||||
|  | 	uint32_t     fb_ctxdma_handle; | ||||||
|  | 	uint32_t     tt_ctxdma_handle; | ||||||
|  | 
 | ||||||
|  | 	int          channel; | ||||||
|  | 	uint32_t     pushbuf_domains; | ||||||
|  | 
 | ||||||
|  | 	/* Notifier memory */ | ||||||
|  | 	uint32_t     notifier_handle; | ||||||
|  | 
 | ||||||
|  | 	/* DRM-enforced subchannel assignments */ | ||||||
|  | 	struct { | ||||||
|  | 		uint32_t handle; | ||||||
|  | 		uint32_t grclass; | ||||||
|  | 	} subchan[8]; | ||||||
|  | 	uint32_t nr_subchan; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_channel_free { | ||||||
|  | 	int channel; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_grobj_alloc { | ||||||
|  | 	int      channel; | ||||||
|  | 	uint32_t handle; | ||||||
|  | 	int      class; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_notifierobj_alloc { | ||||||
|  | 	uint32_t channel; | ||||||
|  | 	uint32_t handle; | ||||||
|  | 	uint32_t size; | ||||||
|  | 	uint32_t offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gpuobj_free { | ||||||
|  | 	int      channel; | ||||||
|  | 	uint32_t handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* FIXME : maybe unify {GET,SET}PARAMs */ | ||||||
|  | #define NOUVEAU_GETPARAM_PCI_VENDOR      3 | ||||||
|  | #define NOUVEAU_GETPARAM_PCI_DEVICE      4 | ||||||
|  | #define NOUVEAU_GETPARAM_BUS_TYPE        5 | ||||||
|  | #define NOUVEAU_GETPARAM_FB_PHYSICAL     6 | ||||||
|  | #define NOUVEAU_GETPARAM_AGP_PHYSICAL    7 | ||||||
|  | #define NOUVEAU_GETPARAM_FB_SIZE         8 | ||||||
|  | #define NOUVEAU_GETPARAM_AGP_SIZE        9 | ||||||
|  | #define NOUVEAU_GETPARAM_PCI_PHYSICAL    10 | ||||||
|  | #define NOUVEAU_GETPARAM_CHIPSET_ID      11 | ||||||
|  | #define NOUVEAU_GETPARAM_VM_VRAM_BASE    12 | ||||||
|  | #define NOUVEAU_GETPARAM_GRAPH_UNITS     13 | ||||||
|  | #define NOUVEAU_GETPARAM_PTIMER_TIME     14 | ||||||
|  | #define NOUVEAU_GETPARAM_HAS_BO_USAGE    15 | ||||||
|  | #define NOUVEAU_GETPARAM_HAS_PAGEFLIP    16 | ||||||
|  | struct drm_nouveau_getparam { | ||||||
|  | 	uint64_t param; | ||||||
|  | 	uint64_t value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_setparam { | ||||||
|  | 	uint64_t param; | ||||||
|  | 	uint64_t value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_DOMAIN_CPU       (1 << 0) | ||||||
|  | #define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1) | ||||||
|  | #define NOUVEAU_GEM_DOMAIN_GART      (1 << 2) | ||||||
|  | #define NOUVEAU_GEM_DOMAIN_MAPPABLE  (1 << 3) | ||||||
|  | #define NOUVEAU_GEM_DOMAIN_COHERENT  (1 << 4) | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_TILE_COMP        0x00030000 /* nv50-only */ | ||||||
|  | #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00 | ||||||
|  | #define NOUVEAU_GEM_TILE_16BPP       0x00000001 | ||||||
|  | #define NOUVEAU_GEM_TILE_32BPP       0x00000002 | ||||||
|  | #define NOUVEAU_GEM_TILE_ZETA        0x00000004 | ||||||
|  | #define NOUVEAU_GEM_TILE_NONCONTIG   0x00000008 | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gem_info { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 domain; | ||||||
|  | 	__u64 size; | ||||||
|  | 	__u64 offset; | ||||||
|  | 	__u64 map_handle; | ||||||
|  | 	__u32 tile_mode; | ||||||
|  | 	__u32 tile_flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gem_new { | ||||||
|  | 	struct drm_nouveau_gem_info info; | ||||||
|  | 	__u32 channel_hint; | ||||||
|  | 	__u32 align; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_MAX_BUFFERS 1024 | ||||||
|  | struct drm_nouveau_gem_pushbuf_bo_presumed { | ||||||
|  | 	__u32 valid; | ||||||
|  | 	__u32 domain; | ||||||
|  | 	__u64 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gem_pushbuf_bo { | ||||||
|  | 	__u64 user_priv; | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 read_domains; | ||||||
|  | 	__u32 write_domains; | ||||||
|  | 	__u32 valid_domains; | ||||||
|  | 	struct drm_nouveau_gem_pushbuf_bo_presumed presumed; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_RELOC_LOW  (1 << 0) | ||||||
|  | #define NOUVEAU_GEM_RELOC_HIGH (1 << 1) | ||||||
|  | #define NOUVEAU_GEM_RELOC_OR   (1 << 2) | ||||||
|  | #define NOUVEAU_GEM_MAX_RELOCS 1024 | ||||||
|  | struct drm_nouveau_gem_pushbuf_reloc { | ||||||
|  | 	__u32 reloc_bo_index; | ||||||
|  | 	__u32 reloc_bo_offset; | ||||||
|  | 	__u32 bo_index; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 data; | ||||||
|  | 	__u32 vor; | ||||||
|  | 	__u32 tor; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_MAX_PUSH 512 | ||||||
|  | struct drm_nouveau_gem_pushbuf_push { | ||||||
|  | 	__u32 bo_index; | ||||||
|  | 	__u32 pad; | ||||||
|  | 	__u64 offset; | ||||||
|  | 	__u64 length; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gem_pushbuf { | ||||||
|  | 	__u32 channel; | ||||||
|  | 	__u32 nr_buffers; | ||||||
|  | 	__u64 buffers; | ||||||
|  | 	__u32 nr_relocs; | ||||||
|  | 	__u32 nr_push; | ||||||
|  | 	__u64 relocs; | ||||||
|  | 	__u64 push; | ||||||
|  | 	__u32 suffix0; | ||||||
|  | 	__u32 suffix1; | ||||||
|  | 	__u64 vram_available; | ||||||
|  | 	__u64 gart_available; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define NOUVEAU_GEM_CPU_PREP_NOWAIT                                  0x00000001 | ||||||
|  | #define NOUVEAU_GEM_CPU_PREP_NOBLOCK                                 0x00000002 | ||||||
|  | #define NOUVEAU_GEM_CPU_PREP_WRITE                                   0x00000004 | ||||||
|  | struct drm_nouveau_gem_cpu_prep { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_gem_cpu_fini { | ||||||
|  | 	__u32 handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | enum nouveau_bus_type { | ||||||
|  | 	NV_AGP     = 0, | ||||||
|  | 	NV_PCI     = 1, | ||||||
|  | 	NV_PCIE    = 2, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_nouveau_sarea { | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_NOUVEAU_GETPARAM           0x00 | ||||||
|  | #define DRM_NOUVEAU_SETPARAM           0x01 | ||||||
|  | #define DRM_NOUVEAU_CHANNEL_ALLOC      0x02 | ||||||
|  | #define DRM_NOUVEAU_CHANNEL_FREE       0x03 | ||||||
|  | #define DRM_NOUVEAU_GROBJ_ALLOC        0x04 | ||||||
|  | #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC  0x05 | ||||||
|  | #define DRM_NOUVEAU_GPUOBJ_FREE        0x06 | ||||||
|  | #define DRM_NOUVEAU_NVIF               0x07 | ||||||
|  | #define DRM_NOUVEAU_GEM_NEW            0x40 | ||||||
|  | #define DRM_NOUVEAU_GEM_PUSHBUF        0x41 | ||||||
|  | #define DRM_NOUVEAU_GEM_CPU_PREP       0x42 | ||||||
|  | #define DRM_NOUVEAU_GEM_CPU_FINI       0x43 | ||||||
|  | #define DRM_NOUVEAU_GEM_INFO           0x44 | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* __NOUVEAU_DRM_H__ */ | ||||||
							
								
								
									
										158
									
								
								libs/common/drm/include/libdrm/qxl_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								libs/common/drm/include/libdrm/qxl_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,158 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright 2013 Red Hat | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | #ifndef QXL_DRM_H | ||||||
|  | #define QXL_DRM_H | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Please note that modifications to all structs defined here are
 | ||||||
|  |  * subject to backwards-compatibility constraints. | ||||||
|  |  * | ||||||
|  |  * Do not use pointers, use __u64 instead for 32 bit / 64 bit user/kernel | ||||||
|  |  * compatibility Keep fields aligned to their size | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define QXL_GEM_DOMAIN_CPU 0 | ||||||
|  | #define QXL_GEM_DOMAIN_VRAM 1 | ||||||
|  | #define QXL_GEM_DOMAIN_SURFACE 2 | ||||||
|  | 
 | ||||||
|  | #define DRM_QXL_ALLOC       0x00 | ||||||
|  | #define DRM_QXL_MAP         0x01 | ||||||
|  | #define DRM_QXL_EXECBUFFER  0x02 | ||||||
|  | #define DRM_QXL_UPDATE_AREA 0x03 | ||||||
|  | #define DRM_QXL_GETPARAM    0x04 | ||||||
|  | #define DRM_QXL_CLIENTCAP   0x05 | ||||||
|  | 
 | ||||||
|  | #define DRM_QXL_ALLOC_SURF  0x06 | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_alloc { | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u32 handle; /* 0 is an invalid handle */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_map { | ||||||
|  | 	__u64 offset; /* use for mmap system call */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * dest is the bo we are writing the relocation into | ||||||
|  |  * src is bo we are relocating. | ||||||
|  |  * *(dest_handle.base_addr + dest_offset) = physical_address(src_handle.addr + | ||||||
|  |  * src_offset) | ||||||
|  |  */ | ||||||
|  | #define QXL_RELOC_TYPE_BO 1 | ||||||
|  | #define QXL_RELOC_TYPE_SURF 2 | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_reloc { | ||||||
|  | 	__u64 src_offset; /* offset into src_handle or src buffer */ | ||||||
|  | 	__u64 dst_offset; /* offset in dest handle */ | ||||||
|  | 	__u32 src_handle; /* dest handle to compute address from */ | ||||||
|  | 	__u32 dst_handle; /* 0 if to command buffer */ | ||||||
|  | 	__u32 reloc_type; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_command { | ||||||
|  | 	__u64		command; /* void* */ | ||||||
|  | 	__u64		relocs; /* struct drm_qxl_reloc* */ | ||||||
|  | 	__u32		type; | ||||||
|  | 	__u32		command_size; | ||||||
|  | 	__u32		relocs_num; | ||||||
|  | 	__u32                pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_execbuffer { | ||||||
|  | 	__u32		flags;		/* for future use */ | ||||||
|  | 	__u32		commands_num; | ||||||
|  | 	__u64		commands;	/* struct drm_qxl_command* */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_update_area { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 top; | ||||||
|  | 	__u32 left; | ||||||
|  | 	__u32 bottom; | ||||||
|  | 	__u32 right; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define QXL_PARAM_NUM_SURFACES 1 /* rom->n_surfaces */ | ||||||
|  | #define QXL_PARAM_MAX_RELOCS 2 | ||||||
|  | struct drm_qxl_getparam { | ||||||
|  | 	__u64 param; | ||||||
|  | 	__u64 value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* these are one bit values */ | ||||||
|  | struct drm_qxl_clientcap { | ||||||
|  | 	__u32 index; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_qxl_alloc_surf { | ||||||
|  | 	__u32 format; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	__s32 stride; | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_ALLOC \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_MAP \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_EXECBUFFER \ | ||||||
|  | 	DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER,\ | ||||||
|  | 		struct drm_qxl_execbuffer) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_UPDATE_AREA \ | ||||||
|  | 	DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA,\ | ||||||
|  | 		struct drm_qxl_update_area) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_GETPARAM \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM,\ | ||||||
|  | 		struct drm_qxl_getparam) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_CLIENTCAP \ | ||||||
|  | 	DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP,\ | ||||||
|  | 		struct drm_qxl_clientcap) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_QXL_ALLOC_SURF \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF,\ | ||||||
|  | 		struct drm_qxl_alloc_surf) | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										336
									
								
								libs/common/drm/include/libdrm/r128_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										336
									
								
								libs/common/drm/include/libdrm/r128_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,336 @@ | |||||||
|  | /* r128_drm.h -- Public header for the r128 driver -*- linux-c -*-
 | ||||||
|  |  * Created: Wed Apr  5 19:24:19 2000 by kevin@precisioninsight.com | ||||||
|  |  */ | ||||||
|  | /*
 | ||||||
|  |  * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. | ||||||
|  |  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  |  * DEALINGS IN THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * Authors: | ||||||
|  |  *    Gareth Hughes <gareth@valinux.com> | ||||||
|  |  *    Kevin E. Martin <martin@valinux.com> | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __R128_DRM_H__ | ||||||
|  | #define __R128_DRM_H__ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* WARNING: If you change any of these defines, make sure to change the
 | ||||||
|  |  * defines in the X server file (r128_sarea.h) | ||||||
|  |  */ | ||||||
|  | #ifndef __R128_SAREA_DEFINES__ | ||||||
|  | #define __R128_SAREA_DEFINES__ | ||||||
|  | 
 | ||||||
|  | /* What needs to be changed for the current vertex buffer?
 | ||||||
|  |  */ | ||||||
|  | #define R128_UPLOAD_CONTEXT		0x001 | ||||||
|  | #define R128_UPLOAD_SETUP		0x002 | ||||||
|  | #define R128_UPLOAD_TEX0		0x004 | ||||||
|  | #define R128_UPLOAD_TEX1		0x008 | ||||||
|  | #define R128_UPLOAD_TEX0IMAGES		0x010 | ||||||
|  | #define R128_UPLOAD_TEX1IMAGES		0x020 | ||||||
|  | #define R128_UPLOAD_CORE		0x040 | ||||||
|  | #define R128_UPLOAD_MASKS		0x080 | ||||||
|  | #define R128_UPLOAD_WINDOW		0x100 | ||||||
|  | #define R128_UPLOAD_CLIPRECTS		0x200	/* handled client-side */ | ||||||
|  | #define R128_REQUIRE_QUIESCENCE		0x400 | ||||||
|  | #define R128_UPLOAD_ALL			0x7ff | ||||||
|  | 
 | ||||||
|  | #define R128_FRONT			0x1 | ||||||
|  | #define R128_BACK			0x2 | ||||||
|  | #define R128_DEPTH			0x4 | ||||||
|  | 
 | ||||||
|  | /* Primitive types
 | ||||||
|  |  */ | ||||||
|  | #define R128_POINTS			0x1 | ||||||
|  | #define R128_LINES			0x2 | ||||||
|  | #define R128_LINE_STRIP			0x3 | ||||||
|  | #define R128_TRIANGLES			0x4 | ||||||
|  | #define R128_TRIANGLE_FAN		0x5 | ||||||
|  | #define R128_TRIANGLE_STRIP		0x6 | ||||||
|  | 
 | ||||||
|  | /* Vertex/indirect buffer size
 | ||||||
|  |  */ | ||||||
|  | #define R128_BUFFER_SIZE		16384 | ||||||
|  | 
 | ||||||
|  | /* Byte offsets for indirect buffer data
 | ||||||
|  |  */ | ||||||
|  | #define R128_INDEX_PRIM_OFFSET		20 | ||||||
|  | #define R128_HOSTDATA_BLIT_OFFSET	32 | ||||||
|  | 
 | ||||||
|  | /* Keep these small for testing.
 | ||||||
|  |  */ | ||||||
|  | #define R128_NR_SAREA_CLIPRECTS		12 | ||||||
|  | 
 | ||||||
|  | /* There are 2 heaps (local/AGP).  Each region within a heap is a
 | ||||||
|  |  *  minimum of 64k, and there are at most 64 of them per heap. | ||||||
|  |  */ | ||||||
|  | #define R128_LOCAL_TEX_HEAP		0 | ||||||
|  | #define R128_AGP_TEX_HEAP		1 | ||||||
|  | #define R128_NR_TEX_HEAPS		2 | ||||||
|  | #define R128_NR_TEX_REGIONS		64 | ||||||
|  | #define R128_LOG_TEX_GRANULARITY	16 | ||||||
|  | 
 | ||||||
|  | #define R128_NR_CONTEXT_REGS		12 | ||||||
|  | 
 | ||||||
|  | #define R128_MAX_TEXTURE_LEVELS		11 | ||||||
|  | #define R128_MAX_TEXTURE_UNITS		2 | ||||||
|  | 
 | ||||||
|  | #endif				/* __R128_SAREA_DEFINES__ */ | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	/* Context state - can be written in one large chunk */ | ||||||
|  | 	unsigned int dst_pitch_offset_c; | ||||||
|  | 	unsigned int dp_gui_master_cntl_c; | ||||||
|  | 	unsigned int sc_top_left_c; | ||||||
|  | 	unsigned int sc_bottom_right_c; | ||||||
|  | 	unsigned int z_offset_c; | ||||||
|  | 	unsigned int z_pitch_c; | ||||||
|  | 	unsigned int z_sten_cntl_c; | ||||||
|  | 	unsigned int tex_cntl_c; | ||||||
|  | 	unsigned int misc_3d_state_cntl_reg; | ||||||
|  | 	unsigned int texture_clr_cmp_clr_c; | ||||||
|  | 	unsigned int texture_clr_cmp_msk_c; | ||||||
|  | 	unsigned int fog_color_c; | ||||||
|  | 
 | ||||||
|  | 	/* Texture state */ | ||||||
|  | 	unsigned int tex_size_pitch_c; | ||||||
|  | 	unsigned int constant_color_c; | ||||||
|  | 
 | ||||||
|  | 	/* Setup state */ | ||||||
|  | 	unsigned int pm4_vc_fpu_setup; | ||||||
|  | 	unsigned int setup_cntl; | ||||||
|  | 
 | ||||||
|  | 	/* Mask state */ | ||||||
|  | 	unsigned int dp_write_mask; | ||||||
|  | 	unsigned int sten_ref_mask_c; | ||||||
|  | 	unsigned int plane_3d_mask_c; | ||||||
|  | 
 | ||||||
|  | 	/* Window state */ | ||||||
|  | 	unsigned int window_xy_offset; | ||||||
|  | 
 | ||||||
|  | 	/* Core state */ | ||||||
|  | 	unsigned int scale_3d_cntl; | ||||||
|  | } drm_r128_context_regs_t; | ||||||
|  | 
 | ||||||
|  | /* Setup registers for each texture unit
 | ||||||
|  |  */ | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int tex_cntl; | ||||||
|  | 	unsigned int tex_combine_cntl; | ||||||
|  | 	unsigned int tex_size_pitch; | ||||||
|  | 	unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS]; | ||||||
|  | 	unsigned int tex_border_color; | ||||||
|  | } drm_r128_texture_regs_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_sarea { | ||||||
|  | 	/* The channel for communication of state information to the kernel
 | ||||||
|  | 	 * on firing a vertex buffer. | ||||||
|  | 	 */ | ||||||
|  | 	drm_r128_context_regs_t context_state; | ||||||
|  | 	drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS]; | ||||||
|  | 	unsigned int dirty; | ||||||
|  | 	unsigned int vertsize; | ||||||
|  | 	unsigned int vc_format; | ||||||
|  | 
 | ||||||
|  | 	/* The current cliprects, or a subset thereof.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS]; | ||||||
|  | 	unsigned int nbox; | ||||||
|  | 
 | ||||||
|  | 	/* Counters for client-side throttling of rendering clients.
 | ||||||
|  | 	 */ | ||||||
|  | 	unsigned int last_frame; | ||||||
|  | 	unsigned int last_dispatch; | ||||||
|  | 
 | ||||||
|  | 	struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1]; | ||||||
|  | 	unsigned int tex_age[R128_NR_TEX_HEAPS]; | ||||||
|  | 	int ctx_owner; | ||||||
|  | 	int pfAllowPageFlip;	/* number of 3d windows (0,1,2 or more) */ | ||||||
|  | 	int pfCurrentPage;	/* which buffer is being displayed? */ | ||||||
|  | } drm_r128_sarea_t; | ||||||
|  | 
 | ||||||
|  | /* WARNING: If you change any of these defines, make sure to change the
 | ||||||
|  |  * defines in the Xserver file (xf86drmR128.h) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Rage 128 specific ioctls
 | ||||||
|  |  * The device specific ioctl range is 0x40 to 0x79. | ||||||
|  |  */ | ||||||
|  | #define DRM_R128_INIT       0x00 | ||||||
|  | #define DRM_R128_CCE_START  0x01 | ||||||
|  | #define DRM_R128_CCE_STOP   0x02 | ||||||
|  | #define DRM_R128_CCE_RESET  0x03 | ||||||
|  | #define DRM_R128_CCE_IDLE   0x04 | ||||||
|  | /* 0x05 not used */ | ||||||
|  | #define DRM_R128_RESET      0x06 | ||||||
|  | #define DRM_R128_SWAP       0x07 | ||||||
|  | #define DRM_R128_CLEAR      0x08 | ||||||
|  | #define DRM_R128_VERTEX     0x09 | ||||||
|  | #define DRM_R128_INDICES    0x0a | ||||||
|  | #define DRM_R128_BLIT       0x0b | ||||||
|  | #define DRM_R128_DEPTH      0x0c | ||||||
|  | #define DRM_R128_STIPPLE    0x0d | ||||||
|  | /* 0x0e not used */ | ||||||
|  | #define DRM_R128_INDIRECT   0x0f | ||||||
|  | #define DRM_R128_FULLSCREEN 0x10 | ||||||
|  | #define DRM_R128_CLEAR2     0x11 | ||||||
|  | #define DRM_R128_GETPARAM   0x12 | ||||||
|  | #define DRM_R128_FLIP       0x13 | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_R128_INIT       DRM_IOW( DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t) | ||||||
|  | #define DRM_IOCTL_R128_CCE_START  DRM_IO(  DRM_COMMAND_BASE + DRM_R128_CCE_START) | ||||||
|  | #define DRM_IOCTL_R128_CCE_STOP   DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t) | ||||||
|  | #define DRM_IOCTL_R128_CCE_RESET  DRM_IO(  DRM_COMMAND_BASE + DRM_R128_CCE_RESET) | ||||||
|  | #define DRM_IOCTL_R128_CCE_IDLE   DRM_IO(  DRM_COMMAND_BASE + DRM_R128_CCE_IDLE) | ||||||
|  | /* 0x05 not used */ | ||||||
|  | #define DRM_IOCTL_R128_RESET      DRM_IO(  DRM_COMMAND_BASE + DRM_R128_RESET) | ||||||
|  | #define DRM_IOCTL_R128_SWAP       DRM_IO(  DRM_COMMAND_BASE + DRM_R128_SWAP) | ||||||
|  | #define DRM_IOCTL_R128_CLEAR      DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t) | ||||||
|  | #define DRM_IOCTL_R128_VERTEX     DRM_IOW( DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t) | ||||||
|  | #define DRM_IOCTL_R128_INDICES    DRM_IOW( DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t) | ||||||
|  | #define DRM_IOCTL_R128_BLIT       DRM_IOW( DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t) | ||||||
|  | #define DRM_IOCTL_R128_DEPTH      DRM_IOW( DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t) | ||||||
|  | #define DRM_IOCTL_R128_STIPPLE    DRM_IOW( DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t) | ||||||
|  | /* 0x0e not used */ | ||||||
|  | #define DRM_IOCTL_R128_INDIRECT   DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_INDIRECT, drm_r128_indirect_t) | ||||||
|  | #define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t) | ||||||
|  | #define DRM_IOCTL_R128_CLEAR2     DRM_IOW( DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t) | ||||||
|  | #define DRM_IOCTL_R128_GETPARAM   DRM_IOWR( DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t) | ||||||
|  | #define DRM_IOCTL_R128_FLIP       DRM_IO(  DRM_COMMAND_BASE + DRM_R128_FLIP) | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_init { | ||||||
|  | 	enum { | ||||||
|  | 		R128_INIT_CCE = 0x01, | ||||||
|  | 		R128_CLEANUP_CCE = 0x02 | ||||||
|  | 	} func; | ||||||
|  | 	unsigned long sarea_priv_offset; | ||||||
|  | 	int is_pci; | ||||||
|  | 	int cce_mode; | ||||||
|  | 	int cce_secure; | ||||||
|  | 	int ring_size; | ||||||
|  | 	int usec_timeout; | ||||||
|  | 
 | ||||||
|  | 	unsigned int fb_bpp; | ||||||
|  | 	unsigned int front_offset, front_pitch; | ||||||
|  | 	unsigned int back_offset, back_pitch; | ||||||
|  | 	unsigned int depth_bpp; | ||||||
|  | 	unsigned int depth_offset, depth_pitch; | ||||||
|  | 	unsigned int span_offset; | ||||||
|  | 
 | ||||||
|  | 	unsigned long fb_offset; | ||||||
|  | 	unsigned long mmio_offset; | ||||||
|  | 	unsigned long ring_offset; | ||||||
|  | 	unsigned long ring_rptr_offset; | ||||||
|  | 	unsigned long buffers_offset; | ||||||
|  | 	unsigned long agp_textures_offset; | ||||||
|  | } drm_r128_init_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_cce_stop { | ||||||
|  | 	int flush; | ||||||
|  | 	int idle; | ||||||
|  | } drm_r128_cce_stop_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_clear { | ||||||
|  | 	unsigned int flags; | ||||||
|  | 	unsigned int clear_color; | ||||||
|  | 	unsigned int clear_depth; | ||||||
|  | 	unsigned int color_mask; | ||||||
|  | 	unsigned int depth_mask; | ||||||
|  | } drm_r128_clear_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_vertex { | ||||||
|  | 	int prim; | ||||||
|  | 	int idx;		/* Index of vertex buffer */ | ||||||
|  | 	int count;		/* Number of vertices in buffer */ | ||||||
|  | 	int discard;		/* Client finished with buffer? */ | ||||||
|  | } drm_r128_vertex_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_indices { | ||||||
|  | 	int prim; | ||||||
|  | 	int idx; | ||||||
|  | 	int start; | ||||||
|  | 	int end; | ||||||
|  | 	int discard;		/* Client finished with buffer? */ | ||||||
|  | } drm_r128_indices_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_blit { | ||||||
|  | 	int idx; | ||||||
|  | 	int pitch; | ||||||
|  | 	int offset; | ||||||
|  | 	int format; | ||||||
|  | 	unsigned short x, y; | ||||||
|  | 	unsigned short width, height; | ||||||
|  | } drm_r128_blit_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_depth { | ||||||
|  | 	enum { | ||||||
|  | 		R128_WRITE_SPAN = 0x01, | ||||||
|  | 		R128_WRITE_PIXELS = 0x02, | ||||||
|  | 		R128_READ_SPAN = 0x03, | ||||||
|  | 		R128_READ_PIXELS = 0x04 | ||||||
|  | 	} func; | ||||||
|  | 	int n; | ||||||
|  | 	int *x; | ||||||
|  | 	int *y; | ||||||
|  | 	unsigned int *buffer; | ||||||
|  | 	unsigned char *mask; | ||||||
|  | } drm_r128_depth_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_stipple { | ||||||
|  | 	unsigned int *mask; | ||||||
|  | } drm_r128_stipple_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_indirect { | ||||||
|  | 	int idx; | ||||||
|  | 	int start; | ||||||
|  | 	int end; | ||||||
|  | 	int discard; | ||||||
|  | } drm_r128_indirect_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_fullscreen { | ||||||
|  | 	enum { | ||||||
|  | 		R128_INIT_FULLSCREEN = 0x01, | ||||||
|  | 		R128_CLEANUP_FULLSCREEN = 0x02 | ||||||
|  | 	} func; | ||||||
|  | } drm_r128_fullscreen_t; | ||||||
|  | 
 | ||||||
|  | /* 2.3: An ioctl to get parameters that aren't available to the 3d
 | ||||||
|  |  * client any other way. | ||||||
|  |  */ | ||||||
|  | #define R128_PARAM_IRQ_NR            1 | ||||||
|  | 
 | ||||||
|  | typedef struct drm_r128_getparam { | ||||||
|  | 	int param; | ||||||
|  | 	void *value; | ||||||
|  | } drm_r128_getparam_t; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										1079
									
								
								libs/common/drm/include/libdrm/radeon_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1079
									
								
								libs/common/drm/include/libdrm/radeon_drm.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										220
									
								
								libs/common/drm/include/libdrm/savage_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								libs/common/drm/include/libdrm/savage_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,220 @@ | |||||||
|  | /* savage_drm.h -- Public header for the savage driver
 | ||||||
|  |  * | ||||||
|  |  * Copyright 2004  Felix Kuehling | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sub license, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the | ||||||
|  |  * next paragraph) shall be included in all copies or substantial portions | ||||||
|  |  * of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||||
|  |  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||||
|  |  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||||
|  |  * NON-INFRINGEMENT. IN NO EVENT SHALL FELIX KUEHLING BE LIABLE FOR | ||||||
|  |  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF | ||||||
|  |  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||||
|  |  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __SAVAGE_DRM_H__ | ||||||
|  | #define __SAVAGE_DRM_H__ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef __SAVAGE_SAREA_DEFINES__ | ||||||
|  | #define __SAVAGE_SAREA_DEFINES__ | ||||||
|  | 
 | ||||||
|  | /* 2 heaps (1 for card, 1 for agp), each divided into up to 128
 | ||||||
|  |  * regions, subject to a minimum region size of (1<<16) == 64k. | ||||||
|  |  * | ||||||
|  |  * Clients may subdivide regions internally, but when sharing between | ||||||
|  |  * clients, the region size is the minimum granularity. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define SAVAGE_CARD_HEAP		0 | ||||||
|  | #define SAVAGE_AGP_HEAP			1 | ||||||
|  | #define SAVAGE_NR_TEX_HEAPS		2 | ||||||
|  | #define SAVAGE_NR_TEX_REGIONS		16 | ||||||
|  | #define SAVAGE_LOG_MIN_TEX_REGION_SIZE	16 | ||||||
|  | 
 | ||||||
|  | #endif				/* __SAVAGE_SAREA_DEFINES__ */ | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_savage_sarea { | ||||||
|  | 	/* LRU lists for texture memory in agp space and on the card.
 | ||||||
|  | 	 */ | ||||||
|  | 	struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS + | ||||||
|  | 						      1]; | ||||||
|  | 	unsigned int texAge[SAVAGE_NR_TEX_HEAPS]; | ||||||
|  | 
 | ||||||
|  | 	/* Mechanism to validate card state.
 | ||||||
|  | 	 */ | ||||||
|  | 	int ctxOwner; | ||||||
|  | } drm_savage_sarea_t, *drm_savage_sarea_ptr; | ||||||
|  | 
 | ||||||
|  | /* Savage-specific ioctls
 | ||||||
|  |  */ | ||||||
|  | #define DRM_SAVAGE_BCI_INIT		0x00 | ||||||
|  | #define DRM_SAVAGE_BCI_CMDBUF           0x01 | ||||||
|  | #define DRM_SAVAGE_BCI_EVENT_EMIT	0x02 | ||||||
|  | #define DRM_SAVAGE_BCI_EVENT_WAIT	0x03 | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_SAVAGE_BCI_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t) | ||||||
|  | #define DRM_IOCTL_SAVAGE_BCI_CMDBUF		DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t) | ||||||
|  | #define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT	DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t) | ||||||
|  | #define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT	DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t) | ||||||
|  | 
 | ||||||
|  | #define SAVAGE_DMA_PCI	1 | ||||||
|  | #define SAVAGE_DMA_AGP	3 | ||||||
|  | typedef struct drm_savage_init { | ||||||
|  | 	enum { | ||||||
|  | 		SAVAGE_INIT_BCI = 1, | ||||||
|  | 		SAVAGE_CLEANUP_BCI = 2 | ||||||
|  | 	} func; | ||||||
|  | 	unsigned int sarea_priv_offset; | ||||||
|  | 
 | ||||||
|  | 	/* some parameters */ | ||||||
|  | 	unsigned int cob_size; | ||||||
|  | 	unsigned int bci_threshold_lo, bci_threshold_hi; | ||||||
|  | 	unsigned int dma_type; | ||||||
|  | 
 | ||||||
|  | 	/* frame buffer layout */ | ||||||
|  | 	unsigned int fb_bpp; | ||||||
|  | 	unsigned int front_offset, front_pitch; | ||||||
|  | 	unsigned int back_offset, back_pitch; | ||||||
|  | 	unsigned int depth_bpp; | ||||||
|  | 	unsigned int depth_offset, depth_pitch; | ||||||
|  | 
 | ||||||
|  | 	/* local textures */ | ||||||
|  | 	unsigned int texture_offset; | ||||||
|  | 	unsigned int texture_size; | ||||||
|  | 
 | ||||||
|  | 	/* physical locations of non-permanent maps */ | ||||||
|  | 	unsigned long status_offset; | ||||||
|  | 	unsigned long buffers_offset; | ||||||
|  | 	unsigned long agp_textures_offset; | ||||||
|  | 	unsigned long cmd_dma_offset; | ||||||
|  | } drm_savage_init_t; | ||||||
|  | 
 | ||||||
|  | typedef union drm_savage_cmd_header drm_savage_cmd_header_t; | ||||||
|  | typedef struct drm_savage_cmdbuf { | ||||||
|  | 	/* command buffer in client's address space */ | ||||||
|  | 	drm_savage_cmd_header_t *cmd_addr; | ||||||
|  | 	unsigned int size;	/* size of the command buffer in 64bit units */ | ||||||
|  | 
 | ||||||
|  | 	unsigned int dma_idx;	/* DMA buffer index to use */ | ||||||
|  | 	int discard;		/* discard DMA buffer when done */ | ||||||
|  | 	/* vertex buffer in client's address space */ | ||||||
|  | 	unsigned int *vb_addr; | ||||||
|  | 	unsigned int vb_size;	/* size of client vertex buffer in bytes */ | ||||||
|  | 	unsigned int vb_stride;	/* stride of vertices in 32bit words */ | ||||||
|  | 	/* boxes in client's address space */ | ||||||
|  | 	struct drm_clip_rect *box_addr; | ||||||
|  | 	unsigned int nbox;	/* number of clipping boxes */ | ||||||
|  | } drm_savage_cmdbuf_t; | ||||||
|  | 
 | ||||||
|  | #define SAVAGE_WAIT_2D  0x1	/* wait for 2D idle before updating event tag */ | ||||||
|  | #define SAVAGE_WAIT_3D  0x2	/* wait for 3D idle before updating event tag */ | ||||||
|  | #define SAVAGE_WAIT_IRQ 0x4	/* emit or wait for IRQ, not implemented yet */ | ||||||
|  | typedef struct drm_savage_event { | ||||||
|  | 	unsigned int count; | ||||||
|  | 	unsigned int flags; | ||||||
|  | } drm_savage_event_emit_t, drm_savage_event_wait_t; | ||||||
|  | 
 | ||||||
|  | /* Commands for the cmdbuf ioctl
 | ||||||
|  |  */ | ||||||
|  | #define SAVAGE_CMD_STATE	0	/* a range of state registers */ | ||||||
|  | #define SAVAGE_CMD_DMA_PRIM	1	/* vertices from DMA buffer */ | ||||||
|  | #define SAVAGE_CMD_VB_PRIM	2	/* vertices from client vertex buffer */ | ||||||
|  | #define SAVAGE_CMD_DMA_IDX	3	/* indexed vertices from DMA buffer */ | ||||||
|  | #define SAVAGE_CMD_VB_IDX	4	/* indexed vertices client vertex buffer */ | ||||||
|  | #define SAVAGE_CMD_CLEAR	5	/* clear buffers */ | ||||||
|  | #define SAVAGE_CMD_SWAP		6	/* swap buffers */ | ||||||
|  | 
 | ||||||
|  | /* Primitive types
 | ||||||
|  | */ | ||||||
|  | #define SAVAGE_PRIM_TRILIST	0	/* triangle list */ | ||||||
|  | #define SAVAGE_PRIM_TRISTRIP	1	/* triangle strip */ | ||||||
|  | #define SAVAGE_PRIM_TRIFAN	2	/* triangle fan */ | ||||||
|  | #define SAVAGE_PRIM_TRILIST_201	3	/* reorder verts for correct flat | ||||||
|  | 					 * shading on s3d */ | ||||||
|  | 
 | ||||||
|  | /* Skip flags (vertex format)
 | ||||||
|  |  */ | ||||||
|  | #define SAVAGE_SKIP_Z		0x01 | ||||||
|  | #define SAVAGE_SKIP_W		0x02 | ||||||
|  | #define SAVAGE_SKIP_C0		0x04 | ||||||
|  | #define SAVAGE_SKIP_C1		0x08 | ||||||
|  | #define SAVAGE_SKIP_S0		0x10 | ||||||
|  | #define SAVAGE_SKIP_T0		0x20 | ||||||
|  | #define SAVAGE_SKIP_ST0		0x30 | ||||||
|  | #define SAVAGE_SKIP_S1		0x40 | ||||||
|  | #define SAVAGE_SKIP_T1		0x80 | ||||||
|  | #define SAVAGE_SKIP_ST1		0xc0 | ||||||
|  | #define SAVAGE_SKIP_ALL_S3D	0x3f | ||||||
|  | #define SAVAGE_SKIP_ALL_S4	0xff | ||||||
|  | 
 | ||||||
|  | /* Buffer names for clear command
 | ||||||
|  |  */ | ||||||
|  | #define SAVAGE_FRONT		0x1 | ||||||
|  | #define SAVAGE_BACK		0x2 | ||||||
|  | #define SAVAGE_DEPTH		0x4 | ||||||
|  | 
 | ||||||
|  | /* 64-bit command header
 | ||||||
|  |  */ | ||||||
|  | union drm_savage_cmd_header { | ||||||
|  | 	struct { | ||||||
|  | 		unsigned char cmd;	/* command */ | ||||||
|  | 		unsigned char pad0; | ||||||
|  | 		unsigned short pad1; | ||||||
|  | 		unsigned short pad2; | ||||||
|  | 		unsigned short pad3; | ||||||
|  | 	} cmd;			/* generic */ | ||||||
|  | 	struct { | ||||||
|  | 		unsigned char cmd; | ||||||
|  | 		unsigned char global;	/* need idle engine? */ | ||||||
|  | 		unsigned short count;	/* number of consecutive registers */ | ||||||
|  | 		unsigned short start;	/* first register */ | ||||||
|  | 		unsigned short pad3; | ||||||
|  | 	} state;		/* SAVAGE_CMD_STATE */ | ||||||
|  | 	struct { | ||||||
|  | 		unsigned char cmd; | ||||||
|  | 		unsigned char prim;	/* primitive type */ | ||||||
|  | 		unsigned short skip;	/* vertex format (skip flags) */ | ||||||
|  | 		unsigned short count;	/* number of vertices */ | ||||||
|  | 		unsigned short start;	/* first vertex in DMA/vertex buffer */ | ||||||
|  | 	} prim;			/* SAVAGE_CMD_DMA_PRIM, SAVAGE_CMD_VB_PRIM */ | ||||||
|  | 	struct { | ||||||
|  | 		unsigned char cmd; | ||||||
|  | 		unsigned char prim; | ||||||
|  | 		unsigned short skip; | ||||||
|  | 		unsigned short count;	/* number of indices that follow */ | ||||||
|  | 		unsigned short pad3; | ||||||
|  | 	} idx;			/* SAVAGE_CMD_DMA_IDX, SAVAGE_CMD_VB_IDX */ | ||||||
|  | 	struct { | ||||||
|  | 		unsigned char cmd; | ||||||
|  | 		unsigned char pad0; | ||||||
|  | 		unsigned short pad1; | ||||||
|  | 		unsigned int flags; | ||||||
|  | 	} clear0;		/* SAVAGE_CMD_CLEAR */ | ||||||
|  | 	struct { | ||||||
|  | 		unsigned int mask; | ||||||
|  | 		unsigned int value; | ||||||
|  | 	} clear1;		/* SAVAGE_CMD_CLEAR data */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										77
									
								
								libs/common/drm/include/libdrm/sis_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								libs/common/drm/include/libdrm/sis_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | |||||||
|  | /* sis_drv.h -- Private header for sis driver -*- linux-c -*- */ | ||||||
|  | /*
 | ||||||
|  |  * Copyright 2005 Eric Anholt | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  |  * SOFTWARE. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __SIS_DRM_H__ | ||||||
|  | #define __SIS_DRM_H__ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* SiS specific ioctls */ | ||||||
|  | #define NOT_USED_0_3 | ||||||
|  | #define DRM_SIS_FB_ALLOC	0x04 | ||||||
|  | #define DRM_SIS_FB_FREE	        0x05 | ||||||
|  | #define NOT_USED_6_12 | ||||||
|  | #define DRM_SIS_AGP_INIT	0x13 | ||||||
|  | #define DRM_SIS_AGP_ALLOC	0x14 | ||||||
|  | #define DRM_SIS_AGP_FREE	0x15 | ||||||
|  | #define DRM_SIS_FB_INIT	        0x16 | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_SIS_FB_ALLOC		DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC, drm_sis_mem_t) | ||||||
|  | #define DRM_IOCTL_SIS_FB_FREE		DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t) | ||||||
|  | #define DRM_IOCTL_SIS_AGP_INIT		DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_INIT, drm_sis_agp_t) | ||||||
|  | #define DRM_IOCTL_SIS_AGP_ALLOC		DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC, drm_sis_mem_t) | ||||||
|  | #define DRM_IOCTL_SIS_AGP_FREE		DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t) | ||||||
|  | #define DRM_IOCTL_SIS_FB_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t) | ||||||
|  | /*
 | ||||||
|  | #define DRM_IOCTL_SIS_FLIP		DRM_IOW( 0x48, drm_sis_flip_t) | ||||||
|  | #define DRM_IOCTL_SIS_FLIP_INIT		DRM_IO(  0x49) | ||||||
|  | #define DRM_IOCTL_SIS_FLIP_FINAL	DRM_IO(  0x50) | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	int context; | ||||||
|  | 	unsigned int offset; | ||||||
|  | 	unsigned int size; | ||||||
|  | 	unsigned long free; | ||||||
|  | } drm_sis_mem_t; | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int offset, size; | ||||||
|  | } drm_sis_agp_t; | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	unsigned int offset, size; | ||||||
|  | } drm_sis_fb_t; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif				/* __SIS_DRM_H__ */ | ||||||
							
								
								
									
										681
									
								
								libs/common/drm/include/libdrm/tegra_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										681
									
								
								libs/common/drm/include/libdrm/tegra_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,681 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2012-2013, NVIDIA CORPORATION.  All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _TEGRA_DRM_H_ | ||||||
|  | #define _TEGRA_DRM_H_ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define DRM_TEGRA_GEM_CREATE_TILED     (1 << 0) | ||||||
|  | #define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1) | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_create - parameters for the GEM object creation IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_create { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @size: | ||||||
|  | 	 * | ||||||
|  | 	 * The size, in bytes, of the buffer object to be created. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 size; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @flags: | ||||||
|  | 	 * | ||||||
|  | 	 * A bitmask of flags that influence the creation of GEM objects: | ||||||
|  | 	 * | ||||||
|  | 	 * DRM_TEGRA_GEM_CREATE_TILED | ||||||
|  | 	 *   Use the 16x16 tiling format for this buffer. | ||||||
|  | 	 * | ||||||
|  | 	 * DRM_TEGRA_GEM_CREATE_BOTTOM_UP | ||||||
|  | 	 *   The buffer has a bottom-up layout. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 flags; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * The handle of the created GEM object. Set by the kernel upon | ||||||
|  | 	 * successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_mmap - parameters for the GEM mmap IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_mmap { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle of the GEM object to obtain an mmap offset for. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @offset: | ||||||
|  | 	 * | ||||||
|  | 	 * The mmap offset for the given GEM object. Set by the kernel upon | ||||||
|  | 	 * successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_syncpt_read - parameters for the read syncpoint IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_syncpt_read { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint to read the current value from. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @value: | ||||||
|  | 	 * | ||||||
|  | 	 * The current syncpoint value. Set by the kernel upon successful | ||||||
|  | 	 * completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_syncpt_incr - parameters for the increment syncpoint IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_syncpt_incr { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint to increment. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_syncpt_wait - parameters for the wait syncpoint IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_syncpt_wait { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint to wait on. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @thresh: | ||||||
|  | 	 * | ||||||
|  | 	 * Threshold value for which to wait. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 thresh; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @timeout: | ||||||
|  | 	 * | ||||||
|  | 	 * Timeout, in milliseconds, to wait. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 timeout; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @value: | ||||||
|  | 	 * | ||||||
|  | 	 * The new syncpoint value after the wait. Set by the kernel upon | ||||||
|  | 	 * successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_TEGRA_NO_TIMEOUT	(0xffffffff) | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_open_channel - parameters for the open channel IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_open_channel { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @client: | ||||||
|  | 	 * | ||||||
|  | 	 * The client ID for this channel. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 client; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @context: | ||||||
|  | 	 * | ||||||
|  | 	 * The application context of this channel. Set by the kernel upon | ||||||
|  | 	 * successful completion of the IOCTL. This context needs to be passed | ||||||
|  | 	 * to the DRM_TEGRA_CHANNEL_CLOSE or the DRM_TEGRA_SUBMIT IOCTLs. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 context; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_close_channel - parameters for the close channel IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_close_channel { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @context: | ||||||
|  | 	 * | ||||||
|  | 	 * The application context of this channel. This is obtained from the | ||||||
|  | 	 * DRM_TEGRA_OPEN_CHANNEL IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 context; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_get_syncpt - parameters for the get syncpoint IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_get_syncpt { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @context: | ||||||
|  | 	 * | ||||||
|  | 	 * The application context identifying the channel for which to obtain | ||||||
|  | 	 * the syncpoint ID. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 context; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @index: | ||||||
|  | 	 * | ||||||
|  | 	 * Index of the client syncpoint for which to obtain the ID. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 index; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * The ID of the given syncpoint. Set by the kernel upon successful | ||||||
|  | 	 * completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_get_syncpt_base - parameters for the get wait base IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_get_syncpt_base { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @context: | ||||||
|  | 	 * | ||||||
|  | 	 * The application context identifying for which channel to obtain the | ||||||
|  | 	 * wait base. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 context; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @syncpt: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint for which to obtain the wait base. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 syncpt; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * The ID of the wait base corresponding to the client syncpoint. Set | ||||||
|  | 	 * by the kernel upon successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_syncpt - syncpoint increment operation | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_syncpt { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @id: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint to operate on. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 id; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @incrs: | ||||||
|  | 	 * | ||||||
|  | 	 * Number of increments to perform for the syncpoint. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 incrs; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_cmdbuf - structure describing a command buffer | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_cmdbuf { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to a GEM object containing the command buffer. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @offset: | ||||||
|  | 	 * | ||||||
|  | 	 * Offset, in bytes, into the GEM object identified by @handle at | ||||||
|  | 	 * which the command buffer starts. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 offset; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @words: | ||||||
|  | 	 * | ||||||
|  | 	 * Number of 32-bit words in this command buffer. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 words; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_reloc - GEM object relocation structure | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_reloc { | ||||||
|  | 	struct { | ||||||
|  | 		/**
 | ||||||
|  | 		 * @cmdbuf.handle: | ||||||
|  | 		 * | ||||||
|  | 		 * Handle to the GEM object containing the command buffer for | ||||||
|  | 		 * which to perform this GEM object relocation. | ||||||
|  | 		 */ | ||||||
|  | 		__u32 handle; | ||||||
|  | 
 | ||||||
|  | 		/**
 | ||||||
|  | 		 * @cmdbuf.offset: | ||||||
|  | 		 * | ||||||
|  | 		 * Offset, in bytes, into the command buffer at which to | ||||||
|  | 		 * insert the relocated address. | ||||||
|  | 		 */ | ||||||
|  | 		__u32 offset; | ||||||
|  | 	} cmdbuf; | ||||||
|  | 	struct { | ||||||
|  | 		/**
 | ||||||
|  | 		 * @target.handle: | ||||||
|  | 		 * | ||||||
|  | 		 * Handle to the GEM object to be relocated. | ||||||
|  | 		 */ | ||||||
|  | 		__u32 handle; | ||||||
|  | 
 | ||||||
|  | 		/**
 | ||||||
|  | 		 * @target.offset: | ||||||
|  | 		 * | ||||||
|  | 		 * Offset, in bytes, into the target GEM object at which the | ||||||
|  | 		 * relocated data starts. | ||||||
|  | 		 */ | ||||||
|  | 		__u32 offset; | ||||||
|  | 	} target; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @shift: | ||||||
|  | 	 * | ||||||
|  | 	 * The number of bits by which to shift relocated addresses. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 shift; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_waitchk - wait check structure | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_waitchk { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to the GEM object containing a command stream on which to | ||||||
|  | 	 * perform the wait check. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @offset: | ||||||
|  | 	 * | ||||||
|  | 	 * Offset, in bytes, of the location in the command stream to perform | ||||||
|  | 	 * the wait check on. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 offset; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @syncpt: | ||||||
|  | 	 * | ||||||
|  | 	 * ID of the syncpoint to wait check. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 syncpt; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @thresh: | ||||||
|  | 	 * | ||||||
|  | 	 * Threshold value for which to check. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 thresh; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_submit - job submission structure | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_submit { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @context: | ||||||
|  | 	 * | ||||||
|  | 	 * The application context identifying the channel to use for the | ||||||
|  | 	 * execution of this job. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 context; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @num_syncpts: | ||||||
|  | 	 * | ||||||
|  | 	 * The number of syncpoints operated on by this job. This defines the | ||||||
|  | 	 * length of the array pointed to by @syncpts. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 num_syncpts; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @num_cmdbufs: | ||||||
|  | 	 * | ||||||
|  | 	 * The number of command buffers to execute as part of this job. This | ||||||
|  | 	 * defines the length of the array pointed to by @cmdbufs. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 num_cmdbufs; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @num_relocs: | ||||||
|  | 	 * | ||||||
|  | 	 * The number of relocations to perform before executing this job. | ||||||
|  | 	 * This defines the length of the array pointed to by @relocs. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 num_relocs; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @num_waitchks: | ||||||
|  | 	 * | ||||||
|  | 	 * The number of wait checks to perform as part of this job. This | ||||||
|  | 	 * defines the length of the array pointed to by @waitchks. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 num_waitchks; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @waitchk_mask: | ||||||
|  | 	 * | ||||||
|  | 	 * Bitmask of valid wait checks. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 waitchk_mask; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @timeout: | ||||||
|  | 	 * | ||||||
|  | 	 * Timeout, in milliseconds, before this job is cancelled. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 timeout; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @syncpts: | ||||||
|  | 	 * | ||||||
|  | 	 * A pointer to an array of &struct drm_tegra_syncpt structures that | ||||||
|  | 	 * specify the syncpoint operations performed as part of this job. | ||||||
|  | 	 * The number of elements in the array must be equal to the value | ||||||
|  | 	 * given by @num_syncpts. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 syncpts; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @cmdbufs: | ||||||
|  | 	 * | ||||||
|  | 	 * A pointer to an array of &struct drm_tegra_cmdbuf structures that | ||||||
|  | 	 * define the command buffers to execute as part of this job. The | ||||||
|  | 	 * number of elements in the array must be equal to the value given | ||||||
|  | 	 * by @num_syncpts. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 cmdbufs; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @relocs: | ||||||
|  | 	 * | ||||||
|  | 	 * A pointer to an array of &struct drm_tegra_reloc structures that | ||||||
|  | 	 * specify the relocations that need to be performed before executing | ||||||
|  | 	 * this job. The number of elements in the array must be equal to the | ||||||
|  | 	 * value given by @num_relocs. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 relocs; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @waitchks: | ||||||
|  | 	 * | ||||||
|  | 	 * A pointer to an array of &struct drm_tegra_waitchk structures that | ||||||
|  | 	 * specify the wait checks to be performed while executing this job. | ||||||
|  | 	 * The number of elements in the array must be equal to the value | ||||||
|  | 	 * given by @num_waitchks. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 waitchks; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @fence: | ||||||
|  | 	 * | ||||||
|  | 	 * The threshold of the syncpoint associated with this job after it | ||||||
|  | 	 * has been completed. Set by the kernel upon successful completion of | ||||||
|  | 	 * the IOCTL. This can be used with the DRM_TEGRA_SYNCPT_WAIT IOCTL to | ||||||
|  | 	 * wait for this job to be finished. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 fence; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @reserved: | ||||||
|  | 	 * | ||||||
|  | 	 * This field is reserved for future use. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 reserved[5]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_TEGRA_GEM_TILING_MODE_PITCH 0 | ||||||
|  | #define DRM_TEGRA_GEM_TILING_MODE_TILED 1 | ||||||
|  | #define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2 | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_set_tiling - parameters for the set tiling IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_set_tiling { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to the GEM object for which to set the tiling parameters. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @mode: | ||||||
|  | 	 * | ||||||
|  | 	 * The tiling mode to set. Must be one of: | ||||||
|  | 	 * | ||||||
|  | 	 * DRM_TEGRA_GEM_TILING_MODE_PITCH | ||||||
|  | 	 *   pitch linear format | ||||||
|  | 	 * | ||||||
|  | 	 * DRM_TEGRA_GEM_TILING_MODE_TILED | ||||||
|  | 	 *   16x16 tiling format | ||||||
|  | 	 * | ||||||
|  | 	 * DRM_TEGRA_GEM_TILING_MODE_BLOCK | ||||||
|  | 	 *   16Bx2 tiling format | ||||||
|  | 	 */ | ||||||
|  | 	__u32 mode; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @value: | ||||||
|  | 	 * | ||||||
|  | 	 * The value to set for the tiling mode parameter. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 value; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_get_tiling - parameters for the get tiling IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_get_tiling { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to the GEM object for which to query the tiling parameters. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @mode: | ||||||
|  | 	 * | ||||||
|  | 	 * The tiling mode currently associated with the GEM object. Set by | ||||||
|  | 	 * the kernel upon successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 mode; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @value: | ||||||
|  | 	 * | ||||||
|  | 	 * The tiling mode parameter currently associated with the GEM object. | ||||||
|  | 	 * Set by the kernel upon successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 value; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @pad: | ||||||
|  | 	 * | ||||||
|  | 	 * Structure padding that may be used in the future. Must be 0. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_TEGRA_GEM_BOTTOM_UP		(1 << 0) | ||||||
|  | #define DRM_TEGRA_GEM_FLAGS		(DRM_TEGRA_GEM_BOTTOM_UP) | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_set_flags - parameters for the set flags IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_set_flags { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to the GEM object for which to set the flags. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @flags: | ||||||
|  | 	 * | ||||||
|  | 	 * The flags to set for the GEM object. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_tegra_gem_get_flags - parameters for the get flags IOCTL | ||||||
|  |  */ | ||||||
|  | struct drm_tegra_gem_get_flags { | ||||||
|  | 	/**
 | ||||||
|  | 	 * @handle: | ||||||
|  | 	 * | ||||||
|  | 	 * Handle to the GEM object for which to query the flags. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 
 | ||||||
|  | 	/**
 | ||||||
|  | 	 * @flags: | ||||||
|  | 	 * | ||||||
|  | 	 * The flags currently associated with the GEM object. Set by the | ||||||
|  | 	 * kernel upon successful completion of the IOCTL. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_TEGRA_GEM_CREATE		0x00 | ||||||
|  | #define DRM_TEGRA_GEM_MMAP		0x01 | ||||||
|  | #define DRM_TEGRA_SYNCPT_READ		0x02 | ||||||
|  | #define DRM_TEGRA_SYNCPT_INCR		0x03 | ||||||
|  | #define DRM_TEGRA_SYNCPT_WAIT		0x04 | ||||||
|  | #define DRM_TEGRA_OPEN_CHANNEL		0x05 | ||||||
|  | #define DRM_TEGRA_CLOSE_CHANNEL		0x06 | ||||||
|  | #define DRM_TEGRA_GET_SYNCPT		0x07 | ||||||
|  | #define DRM_TEGRA_SUBMIT		0x08 | ||||||
|  | #define DRM_TEGRA_GET_SYNCPT_BASE	0x09 | ||||||
|  | #define DRM_TEGRA_GEM_SET_TILING	0x0a | ||||||
|  | #define DRM_TEGRA_GEM_GET_TILING	0x0b | ||||||
|  | #define DRM_TEGRA_GEM_SET_FLAGS		0x0c | ||||||
|  | #define DRM_TEGRA_GEM_GET_FLAGS		0x0d | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create) | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap) | ||||||
|  | #define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read) | ||||||
|  | #define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr) | ||||||
|  | #define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait) | ||||||
|  | #define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel) | ||||||
|  | #define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_close_channel) | ||||||
|  | #define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt) | ||||||
|  | #define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit) | ||||||
|  | #define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base) | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling) | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling) | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags) | ||||||
|  | #define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags) | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										442
									
								
								libs/common/drm/include/libdrm/vc4_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										442
									
								
								libs/common/drm/include/libdrm/vc4_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,442 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright © 2014-2015 Broadcom | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||||
|  |  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||||
|  |  * IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _VC4_DRM_H_ | ||||||
|  | #define _VC4_DRM_H_ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define DRM_VC4_SUBMIT_CL                         0x00 | ||||||
|  | #define DRM_VC4_WAIT_SEQNO                        0x01 | ||||||
|  | #define DRM_VC4_WAIT_BO                           0x02 | ||||||
|  | #define DRM_VC4_CREATE_BO                         0x03 | ||||||
|  | #define DRM_VC4_MMAP_BO                           0x04 | ||||||
|  | #define DRM_VC4_CREATE_SHADER_BO                  0x05 | ||||||
|  | #define DRM_VC4_GET_HANG_STATE                    0x06 | ||||||
|  | #define DRM_VC4_GET_PARAM                         0x07 | ||||||
|  | #define DRM_VC4_SET_TILING                        0x08 | ||||||
|  | #define DRM_VC4_GET_TILING                        0x09 | ||||||
|  | #define DRM_VC4_LABEL_BO                          0x0a | ||||||
|  | #define DRM_VC4_GEM_MADVISE                       0x0b | ||||||
|  | #define DRM_VC4_PERFMON_CREATE                    0x0c | ||||||
|  | #define DRM_VC4_PERFMON_DESTROY                   0x0d | ||||||
|  | #define DRM_VC4_PERFMON_GET_VALUES                0x0e | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VC4_SUBMIT_CL           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl) | ||||||
|  | #define DRM_IOCTL_VC4_WAIT_SEQNO          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno) | ||||||
|  | #define DRM_IOCTL_VC4_WAIT_BO             DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_BO, struct drm_vc4_wait_bo) | ||||||
|  | #define DRM_IOCTL_VC4_CREATE_BO           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_BO, struct drm_vc4_create_bo) | ||||||
|  | #define DRM_IOCTL_VC4_MMAP_BO             DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo) | ||||||
|  | #define DRM_IOCTL_VC4_CREATE_SHADER_BO    DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo) | ||||||
|  | #define DRM_IOCTL_VC4_GET_HANG_STATE      DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state) | ||||||
|  | #define DRM_IOCTL_VC4_GET_PARAM           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param) | ||||||
|  | #define DRM_IOCTL_VC4_SET_TILING          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling) | ||||||
|  | #define DRM_IOCTL_VC4_GET_TILING          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling) | ||||||
|  | #define DRM_IOCTL_VC4_LABEL_BO            DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo) | ||||||
|  | #define DRM_IOCTL_VC4_GEM_MADVISE         DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GEM_MADVISE, struct drm_vc4_gem_madvise) | ||||||
|  | #define DRM_IOCTL_VC4_PERFMON_CREATE      DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_CREATE, struct drm_vc4_perfmon_create) | ||||||
|  | #define DRM_IOCTL_VC4_PERFMON_DESTROY     DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_DESTROY, struct drm_vc4_perfmon_destroy) | ||||||
|  | #define DRM_IOCTL_VC4_PERFMON_GET_VALUES  DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_PERFMON_GET_VALUES, struct drm_vc4_perfmon_get_values) | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_submit_rcl_surface { | ||||||
|  | 	__u32 hindex; /* Handle index, or ~0 if not present. */ | ||||||
|  | 	__u32 offset; /* Offset to start of buffer. */ | ||||||
|  | 	/*
 | ||||||
|  | 	 * Bits for either render config (color_write) or load/store packet. | ||||||
|  | 	 * Bits should all be 0 for MSAA load/stores. | ||||||
|  | 	 */ | ||||||
|  | 	__u16 bits; | ||||||
|  | 
 | ||||||
|  | #define VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES		(1 << 0) | ||||||
|  | 	__u16 flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_submit_cl - ioctl argument for submitting commands to the 3D | ||||||
|  |  * engine. | ||||||
|  |  * | ||||||
|  |  * Drivers typically use GPU BOs to store batchbuffers / command lists and | ||||||
|  |  * their associated state.  However, because the VC4 lacks an MMU, we have to | ||||||
|  |  * do validation of memory accesses by the GPU commands.  If we were to store | ||||||
|  |  * our commands in BOs, we'd need to do uncached readback from them to do the | ||||||
|  |  * validation process, which is too expensive.  Instead, userspace accumulates | ||||||
|  |  * commands and associated state in plain memory, then the kernel copies the | ||||||
|  |  * data to its own address space, and then validates and stores it in a GPU | ||||||
|  |  * BO. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_submit_cl { | ||||||
|  | 	/* Pointer to the binner command list.
 | ||||||
|  | 	 * | ||||||
|  | 	 * This is the first set of commands executed, which runs the | ||||||
|  | 	 * coordinate shader to determine where primitives land on the screen, | ||||||
|  | 	 * then writes out the state updates and draw calls necessary per tile | ||||||
|  | 	 * to the tile allocation BO. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 bin_cl; | ||||||
|  | 
 | ||||||
|  | 	/* Pointer to the shader records.
 | ||||||
|  | 	 * | ||||||
|  | 	 * Shader records are the structures read by the hardware that contain | ||||||
|  | 	 * pointers to uniforms, shaders, and vertex attributes.  The | ||||||
|  | 	 * reference to the shader record has enough information to determine | ||||||
|  | 	 * how many pointers are necessary (fixed number for shaders/uniforms, | ||||||
|  | 	 * and an attribute count), so those BO indices into bo_handles are | ||||||
|  | 	 * just stored as __u32s before each shader record passed in. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 shader_rec; | ||||||
|  | 
 | ||||||
|  | 	/* Pointer to uniform data and texture handles for the textures
 | ||||||
|  | 	 * referenced by the shader. | ||||||
|  | 	 * | ||||||
|  | 	 * For each shader state record, there is a set of uniform data in the | ||||||
|  | 	 * order referenced by the record (FS, VS, then CS).  Each set of | ||||||
|  | 	 * uniform data has a __u32 index into bo_handles per texture | ||||||
|  | 	 * sample operation, in the order the QPU_W_TMUn_S writes appear in | ||||||
|  | 	 * the program.  Following the texture BO handle indices is the actual | ||||||
|  | 	 * uniform data. | ||||||
|  | 	 * | ||||||
|  | 	 * The individual uniform state blocks don't have sizes passed in, | ||||||
|  | 	 * because the kernel has to determine the sizes anyway during shader | ||||||
|  | 	 * code validation. | ||||||
|  | 	 */ | ||||||
|  | 	__u64 uniforms; | ||||||
|  | 	__u64 bo_handles; | ||||||
|  | 
 | ||||||
|  | 	/* Size in bytes of the binner command list. */ | ||||||
|  | 	__u32 bin_cl_size; | ||||||
|  | 	/* Size in bytes of the set of shader records. */ | ||||||
|  | 	__u32 shader_rec_size; | ||||||
|  | 	/* Number of shader records.
 | ||||||
|  | 	 * | ||||||
|  | 	 * This could just be computed from the contents of shader_records and | ||||||
|  | 	 * the address bits of references to them from the bin CL, but it | ||||||
|  | 	 * keeps the kernel from having to resize some allocations it makes. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 shader_rec_count; | ||||||
|  | 	/* Size in bytes of the uniform state. */ | ||||||
|  | 	__u32 uniforms_size; | ||||||
|  | 
 | ||||||
|  | 	/* Number of BO handles passed in (size is that times 4). */ | ||||||
|  | 	__u32 bo_handle_count; | ||||||
|  | 
 | ||||||
|  | 	/* RCL setup: */ | ||||||
|  | 	__u16 width; | ||||||
|  | 	__u16 height; | ||||||
|  | 	__u8 min_x_tile; | ||||||
|  | 	__u8 min_y_tile; | ||||||
|  | 	__u8 max_x_tile; | ||||||
|  | 	__u8 max_y_tile; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface color_read; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface color_write; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface zs_read; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface zs_write; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface msaa_color_write; | ||||||
|  | 	struct drm_vc4_submit_rcl_surface msaa_zs_write; | ||||||
|  | 	__u32 clear_color[2]; | ||||||
|  | 	__u32 clear_z; | ||||||
|  | 	__u8 clear_s; | ||||||
|  | 
 | ||||||
|  | 	__u32 pad:24; | ||||||
|  | 
 | ||||||
|  | #define VC4_SUBMIT_CL_USE_CLEAR_COLOR			(1 << 0) | ||||||
|  | /* By default, the kernel gets to choose the order that the tiles are
 | ||||||
|  |  * rendered in.  If this is set, then the tiles will be rendered in a | ||||||
|  |  * raster order, with the right-to-left vs left-to-right and | ||||||
|  |  * top-to-bottom vs bottom-to-top dictated by | ||||||
|  |  * VC4_SUBMIT_CL_RCL_ORDER_INCREASING_*.  This allows overlapping | ||||||
|  |  * blits to be implemented using the 3D engine. | ||||||
|  |  */ | ||||||
|  | #define VC4_SUBMIT_CL_FIXED_RCL_ORDER			(1 << 1) | ||||||
|  | #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X		(1 << 2) | ||||||
|  | #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y		(1 << 3) | ||||||
|  | 	__u32 flags; | ||||||
|  | 
 | ||||||
|  | 	/* Returned value of the seqno of this render job (for the
 | ||||||
|  | 	 * wait ioctl). | ||||||
|  | 	 */ | ||||||
|  | 	__u64 seqno; | ||||||
|  | 
 | ||||||
|  | 	/* ID of the perfmon to attach to this job. 0 means no perfmon. */ | ||||||
|  | 	__u32 perfmonid; | ||||||
|  | 
 | ||||||
|  | 	/* Syncobj handle to wait on. If set, processing of this render job
 | ||||||
|  | 	 * will not start until the syncobj is signaled. 0 means ignore. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 in_sync; | ||||||
|  | 
 | ||||||
|  | 	/* Syncobj handle to export fence to. If set, the fence in the syncobj
 | ||||||
|  | 	 * will be replaced with a fence that signals upon completion of this | ||||||
|  | 	 * render job. 0 means ignore. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 out_sync; | ||||||
|  | 
 | ||||||
|  | 	__u32 pad2; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_wait_seqno - ioctl argument for waiting for | ||||||
|  |  * DRM_VC4_SUBMIT_CL completion using its returned seqno. | ||||||
|  |  * | ||||||
|  |  * timeout_ns is the timeout in nanoseconds, where "0" means "don't | ||||||
|  |  * block, just return the status." | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_wait_seqno { | ||||||
|  | 	__u64 seqno; | ||||||
|  | 	__u64 timeout_ns; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_wait_bo - ioctl argument for waiting for | ||||||
|  |  * completion of the last DRM_VC4_SUBMIT_CL on a BO. | ||||||
|  |  * | ||||||
|  |  * This is useful for cases where multiple processes might be | ||||||
|  |  * rendering to a BO and you want to wait for all rendering to be | ||||||
|  |  * completed. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_wait_bo { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | 	__u64 timeout_ns; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_create_bo - ioctl argument for creating VC4 BOs. | ||||||
|  |  * | ||||||
|  |  * There are currently no values for the flags argument, but it may be | ||||||
|  |  * used in a future extension. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_create_bo { | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	/** Returned GEM handle for the BO. */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_mmap_bo - ioctl argument for mapping VC4 BOs. | ||||||
|  |  * | ||||||
|  |  * This doesn't actually perform an mmap.  Instead, it returns the | ||||||
|  |  * offset you need to use in an mmap on the DRM device node.  This | ||||||
|  |  * means that tools like valgrind end up knowing about the mapped | ||||||
|  |  * memory. | ||||||
|  |  * | ||||||
|  |  * There are currently no values for the flags argument, but it may be | ||||||
|  |  * used in a future extension. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_mmap_bo { | ||||||
|  | 	/** Handle for the object being mapped. */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	/** offset into the drm node to use for subsequent mmap call. */ | ||||||
|  | 	__u64 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_create_shader_bo - ioctl argument for creating VC4 | ||||||
|  |  * shader BOs. | ||||||
|  |  * | ||||||
|  |  * Since allowing a shader to be overwritten while it's also being | ||||||
|  |  * executed from would allow privlege escalation, shaders must be | ||||||
|  |  * created using this ioctl, and they can't be mmapped later. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_create_shader_bo { | ||||||
|  | 	/* Size of the data argument. */ | ||||||
|  | 	__u32 size; | ||||||
|  | 	/* Flags, currently must be 0. */ | ||||||
|  | 	__u32 flags; | ||||||
|  | 
 | ||||||
|  | 	/* Pointer to the data. */ | ||||||
|  | 	__u64 data; | ||||||
|  | 
 | ||||||
|  | 	/** Returned GEM handle for the BO. */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	/* Pad, must be 0. */ | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_get_hang_state_bo { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 paddr; | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_hang_state - ioctl argument for collecting state | ||||||
|  |  * from a GPU hang for analysis. | ||||||
|  | */ | ||||||
|  | struct drm_vc4_get_hang_state { | ||||||
|  | 	/** Pointer to array of struct drm_vc4_get_hang_state_bo. */ | ||||||
|  | 	__u64 bo; | ||||||
|  | 	/**
 | ||||||
|  | 	 * On input, the size of the bo array.  Output is the number | ||||||
|  | 	 * of bos to be returned. | ||||||
|  | 	 */ | ||||||
|  | 	__u32 bo_count; | ||||||
|  | 
 | ||||||
|  | 	__u32 start_bin, start_render; | ||||||
|  | 
 | ||||||
|  | 	__u32 ct0ca, ct0ea; | ||||||
|  | 	__u32 ct1ca, ct1ea; | ||||||
|  | 	__u32 ct0cs, ct1cs; | ||||||
|  | 	__u32 ct0ra0, ct1ra0; | ||||||
|  | 
 | ||||||
|  | 	__u32 bpca, bpcs; | ||||||
|  | 	__u32 bpoa, bpos; | ||||||
|  | 
 | ||||||
|  | 	__u32 vpmbase; | ||||||
|  | 
 | ||||||
|  | 	__u32 dbge; | ||||||
|  | 	__u32 fdbgo; | ||||||
|  | 	__u32 fdbgb; | ||||||
|  | 	__u32 fdbgr; | ||||||
|  | 	__u32 fdbgs; | ||||||
|  | 	__u32 errstat; | ||||||
|  | 
 | ||||||
|  | 	/* Pad that we may save more registers into in the future. */ | ||||||
|  | 	__u32 pad[16]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_VC4_PARAM_V3D_IDENT0		0 | ||||||
|  | #define DRM_VC4_PARAM_V3D_IDENT1		1 | ||||||
|  | #define DRM_VC4_PARAM_V3D_IDENT2		2 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_BRANCHES		3 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_ETC1		4 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_THREADED_FS	5 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER	6 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_MADVISE		7 | ||||||
|  | #define DRM_VC4_PARAM_SUPPORTS_PERFMON		8 | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_get_param { | ||||||
|  | 	__u32 param; | ||||||
|  | 	__u32 pad; | ||||||
|  | 	__u64 value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_get_tiling { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u64 modifier; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_set_tiling { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u64 modifier; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * struct drm_vc4_label_bo - Attach a name to a BO for debug purposes. | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_label_bo { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 len; | ||||||
|  | 	__u64 name; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * States prefixed with '__' are internal states and cannot be passed to the | ||||||
|  |  * DRM_IOCTL_VC4_GEM_MADVISE ioctl. | ||||||
|  |  */ | ||||||
|  | #define VC4_MADV_WILLNEED			0 | ||||||
|  | #define VC4_MADV_DONTNEED			1 | ||||||
|  | #define __VC4_MADV_PURGED			2 | ||||||
|  | #define __VC4_MADV_NOTSUPP			3 | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_gem_madvise { | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 madv; | ||||||
|  | 	__u32 retained; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | enum { | ||||||
|  | 	VC4_PERFCNT_FEP_VALID_PRIMS_NO_RENDER, | ||||||
|  | 	VC4_PERFCNT_FEP_VALID_PRIMS_RENDER, | ||||||
|  | 	VC4_PERFCNT_FEP_CLIPPED_QUADS, | ||||||
|  | 	VC4_PERFCNT_FEP_VALID_QUADS, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_NOT_PASSING_STENCIL, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_NOT_PASSING_Z_AND_STENCIL, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_PASSING_Z_AND_STENCIL, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_ZERO_COVERAGE, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_NON_ZERO_COVERAGE, | ||||||
|  | 	VC4_PERFCNT_TLB_QUADS_WRITTEN_TO_COLOR_BUF, | ||||||
|  | 	VC4_PERFCNT_PLB_PRIMS_OUTSIDE_VIEWPORT, | ||||||
|  | 	VC4_PERFCNT_PLB_PRIMS_NEED_CLIPPING, | ||||||
|  | 	VC4_PERFCNT_PSE_PRIMS_REVERSED, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_IDLE_CYCLES, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_VERTEX_COORD_SHADING, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_FRAGMENT_SHADING, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_EXEC_VALID_INST, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_TMUS, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_SCOREBOARD, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_CLK_CYCLES_WAITING_VARYINGS, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_INST_CACHE_HIT, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_INST_CACHE_MISS, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_HIT, | ||||||
|  | 	VC4_PERFCNT_QPU_TOTAL_UNIFORM_CACHE_MISS, | ||||||
|  | 	VC4_PERFCNT_TMU_TOTAL_TEXT_QUADS_PROCESSED, | ||||||
|  | 	VC4_PERFCNT_TMU_TOTAL_TEXT_CACHE_MISS, | ||||||
|  | 	VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VDW_STALLED, | ||||||
|  | 	VC4_PERFCNT_VPM_TOTAL_CLK_CYCLES_VCD_STALLED, | ||||||
|  | 	VC4_PERFCNT_L2C_TOTAL_L2_CACHE_HIT, | ||||||
|  | 	VC4_PERFCNT_L2C_TOTAL_L2_CACHE_MISS, | ||||||
|  | 	VC4_PERFCNT_NUM_EVENTS, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_VC4_MAX_PERF_COUNTERS	16 | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_perfmon_create { | ||||||
|  | 	__u32 id; | ||||||
|  | 	__u32 ncounters; | ||||||
|  | 	__u8 events[DRM_VC4_MAX_PERF_COUNTERS]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_vc4_perfmon_destroy { | ||||||
|  | 	__u32 id; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Returns the values of the performance counters tracked by this | ||||||
|  |  * perfmon (as an array of ncounters u64 values). | ||||||
|  |  * | ||||||
|  |  * No implicit synchronization is performed, so the user has to | ||||||
|  |  * guarantee that any jobs using this perfmon have already been | ||||||
|  |  * completed  (probably by blocking on the seqno returned by the | ||||||
|  |  * last exec that used the perfmon). | ||||||
|  |  */ | ||||||
|  | struct drm_vc4_perfmon_get_values { | ||||||
|  | 	__u32 id; | ||||||
|  | 	__u64 values_ptr; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* _VC4_DRM_H_ */ | ||||||
							
								
								
									
										283
									
								
								libs/common/drm/include/libdrm/via_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								libs/common/drm/include/libdrm/via_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,283 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. | ||||||
|  |  * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sub license, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the | ||||||
|  |  * next paragraph) shall be included in all copies or substantial portions | ||||||
|  |  * of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL | ||||||
|  |  * VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  |  * DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | #ifndef _VIA_DRM_H_ | ||||||
|  | #define _VIA_DRM_H_ | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* WARNING: These defines must be the same as what the Xserver uses.
 | ||||||
|  |  * if you change them, you must change the defines in the Xserver. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _VIA_DEFINES_ | ||||||
|  | #define _VIA_DEFINES_ | ||||||
|  | 
 | ||||||
|  | #include "via_drmclient.h" | ||||||
|  | 
 | ||||||
|  | #define VIA_NR_SAREA_CLIPRECTS		8 | ||||||
|  | #define VIA_NR_XVMC_PORTS               10 | ||||||
|  | #define VIA_NR_XVMC_LOCKS               5 | ||||||
|  | #define VIA_MAX_CACHELINE_SIZE          64 | ||||||
|  | #define XVMCLOCKPTR(saPriv,lockNo)					\ | ||||||
|  | 	((__volatile__ struct drm_hw_lock *)(((((unsigned long) (saPriv)->XvMCLockArea) + \ | ||||||
|  | 				      (VIA_MAX_CACHELINE_SIZE - 1)) &	\ | ||||||
|  | 				     ~(VIA_MAX_CACHELINE_SIZE - 1)) +	\ | ||||||
|  | 				    VIA_MAX_CACHELINE_SIZE*(lockNo))) | ||||||
|  | 
 | ||||||
|  | /* Each region is a minimum of 64k, and there are at most 64 of them.
 | ||||||
|  |  */ | ||||||
|  | #define VIA_NR_TEX_REGIONS 64 | ||||||
|  | #define VIA_LOG_MIN_TEX_REGION_SIZE 16 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define VIA_UPLOAD_TEX0IMAGE  0x1	/* handled clientside */ | ||||||
|  | #define VIA_UPLOAD_TEX1IMAGE  0x2	/* handled clientside */ | ||||||
|  | #define VIA_UPLOAD_CTX        0x4 | ||||||
|  | #define VIA_UPLOAD_BUFFERS    0x8 | ||||||
|  | #define VIA_UPLOAD_TEX0       0x10 | ||||||
|  | #define VIA_UPLOAD_TEX1       0x20 | ||||||
|  | #define VIA_UPLOAD_CLIPRECTS  0x40 | ||||||
|  | #define VIA_UPLOAD_ALL        0xff | ||||||
|  | 
 | ||||||
|  | /* VIA specific ioctls */ | ||||||
|  | #define DRM_VIA_ALLOCMEM	0x00 | ||||||
|  | #define DRM_VIA_FREEMEM	        0x01 | ||||||
|  | #define DRM_VIA_AGP_INIT	0x02 | ||||||
|  | #define DRM_VIA_FB_INIT	        0x03 | ||||||
|  | #define DRM_VIA_MAP_INIT	0x04 | ||||||
|  | #define DRM_VIA_DEC_FUTEX       0x05 | ||||||
|  | #define NOT_USED | ||||||
|  | #define DRM_VIA_DMA_INIT	0x07 | ||||||
|  | #define DRM_VIA_CMDBUFFER	0x08 | ||||||
|  | #define DRM_VIA_FLUSH	        0x09 | ||||||
|  | #define DRM_VIA_PCICMD	        0x0a | ||||||
|  | #define DRM_VIA_CMDBUF_SIZE	0x0b | ||||||
|  | #define NOT_USED | ||||||
|  | #define DRM_VIA_WAIT_IRQ        0x0d | ||||||
|  | #define DRM_VIA_DMA_BLIT        0x0e | ||||||
|  | #define DRM_VIA_BLIT_SYNC       0x0f | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIA_ALLOCMEM	  DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t) | ||||||
|  | #define DRM_IOCTL_VIA_FREEMEM	  DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t) | ||||||
|  | #define DRM_IOCTL_VIA_AGP_INIT	  DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t) | ||||||
|  | #define DRM_IOCTL_VIA_FB_INIT	  DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t) | ||||||
|  | #define DRM_IOCTL_VIA_MAP_INIT	  DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t) | ||||||
|  | #define DRM_IOCTL_VIA_DEC_FUTEX   DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t) | ||||||
|  | #define DRM_IOCTL_VIA_DMA_INIT	  DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t) | ||||||
|  | #define DRM_IOCTL_VIA_CMDBUFFER	  DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t) | ||||||
|  | #define DRM_IOCTL_VIA_FLUSH	  DRM_IO(  DRM_COMMAND_BASE + DRM_VIA_FLUSH) | ||||||
|  | #define DRM_IOCTL_VIA_PCICMD	  DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t) | ||||||
|  | #define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, \ | ||||||
|  | 					    drm_via_cmdbuf_size_t) | ||||||
|  | #define DRM_IOCTL_VIA_WAIT_IRQ    DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t) | ||||||
|  | #define DRM_IOCTL_VIA_DMA_BLIT    DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t) | ||||||
|  | #define DRM_IOCTL_VIA_BLIT_SYNC   DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t) | ||||||
|  | 
 | ||||||
|  | /* Indices into buf.Setup where various bits of state are mirrored per
 | ||||||
|  |  * context and per buffer.  These can be fired at the card as a unit, | ||||||
|  |  * or in a piecewise fashion as required. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define VIA_TEX_SETUP_SIZE 8 | ||||||
|  | 
 | ||||||
|  | /* Flags for clear ioctl
 | ||||||
|  |  */ | ||||||
|  | #define VIA_FRONT   0x1 | ||||||
|  | #define VIA_BACK    0x2 | ||||||
|  | #define VIA_DEPTH   0x4 | ||||||
|  | #define VIA_STENCIL 0x8 | ||||||
|  | #define VIA_MEM_VIDEO   0	/* matches drm constant */ | ||||||
|  | #define VIA_MEM_AGP     1	/* matches drm constant */ | ||||||
|  | #define VIA_MEM_SYSTEM  2 | ||||||
|  | #define VIA_MEM_MIXED   3 | ||||||
|  | #define VIA_MEM_UNKNOWN 4 | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	__u32 offset; | ||||||
|  | 	__u32 size; | ||||||
|  | } drm_via_agp_t; | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	__u32 offset; | ||||||
|  | 	__u32 size; | ||||||
|  | } drm_via_fb_t; | ||||||
|  | 
 | ||||||
|  | typedef struct { | ||||||
|  | 	__u32 context; | ||||||
|  | 	__u32 type; | ||||||
|  | 	__u32 size; | ||||||
|  | 	unsigned long index; | ||||||
|  | 	unsigned long offset; | ||||||
|  | } drm_via_mem_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_init { | ||||||
|  | 	enum { | ||||||
|  | 		VIA_INIT_MAP = 0x01, | ||||||
|  | 		VIA_CLEANUP_MAP = 0x02 | ||||||
|  | 	} func; | ||||||
|  | 
 | ||||||
|  | 	unsigned long sarea_priv_offset; | ||||||
|  | 	unsigned long fb_offset; | ||||||
|  | 	unsigned long mmio_offset; | ||||||
|  | 	unsigned long agpAddr; | ||||||
|  | } drm_via_init_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_futex { | ||||||
|  | 	enum { | ||||||
|  | 		VIA_FUTEX_WAIT = 0x00, | ||||||
|  | 		VIA_FUTEX_WAKE = 0X01 | ||||||
|  | 	} func; | ||||||
|  | 	__u32 ms; | ||||||
|  | 	__u32 lock; | ||||||
|  | 	__u32 val; | ||||||
|  | } drm_via_futex_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_dma_init { | ||||||
|  | 	enum { | ||||||
|  | 		VIA_INIT_DMA = 0x01, | ||||||
|  | 		VIA_CLEANUP_DMA = 0x02, | ||||||
|  | 		VIA_DMA_INITIALIZED = 0x03 | ||||||
|  | 	} func; | ||||||
|  | 
 | ||||||
|  | 	unsigned long offset; | ||||||
|  | 	unsigned long size; | ||||||
|  | 	unsigned long reg_pause_addr; | ||||||
|  | } drm_via_dma_init_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_cmdbuffer { | ||||||
|  | 	char *buf; | ||||||
|  | 	unsigned long size; | ||||||
|  | } drm_via_cmdbuffer_t; | ||||||
|  | 
 | ||||||
|  | /* Warning: If you change the SAREA structure you must change the Xserver
 | ||||||
|  |  * structure as well */ | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_tex_region { | ||||||
|  | 	unsigned char next, prev;	/* indices to form a circular LRU  */ | ||||||
|  | 	unsigned char inUse;	/* owned by a client, or free? */ | ||||||
|  | 	int age;		/* tracked by clients to update local LRU's */ | ||||||
|  | } drm_via_tex_region_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_sarea { | ||||||
|  | 	unsigned int dirty; | ||||||
|  | 	unsigned int nbox; | ||||||
|  | 	struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS]; | ||||||
|  | 	drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1]; | ||||||
|  | 	int texAge;		/* last time texture was uploaded */ | ||||||
|  | 	int ctxOwner;		/* last context to upload state */ | ||||||
|  | 	int vertexPrim; | ||||||
|  | 
 | ||||||
|  | 	/*
 | ||||||
|  | 	 * Below is for XvMC. | ||||||
|  | 	 * We want the lock integers alone on, and aligned to, a cache line. | ||||||
|  | 	 * Therefore this somewhat strange construct. | ||||||
|  | 	 */ | ||||||
|  | 
 | ||||||
|  | 	char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)]; | ||||||
|  | 
 | ||||||
|  | 	unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS]; | ||||||
|  | 	unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS]; | ||||||
|  | 	unsigned int XvMCCtxNoGrabbed;	/* Last context to hold decoder */ | ||||||
|  | 
 | ||||||
|  | 	/* Used by the 3d driver only at this point, for pageflipping:
 | ||||||
|  | 	 */ | ||||||
|  | 	unsigned int pfCurrentOffset; | ||||||
|  | } drm_via_sarea_t; | ||||||
|  | 
 | ||||||
|  | typedef struct _drm_via_cmdbuf_size { | ||||||
|  | 	enum { | ||||||
|  | 		VIA_CMDBUF_SPACE = 0x01, | ||||||
|  | 		VIA_CMDBUF_LAG = 0x02 | ||||||
|  | 	} func; | ||||||
|  | 	int wait; | ||||||
|  | 	__u32 size; | ||||||
|  | } drm_via_cmdbuf_size_t; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  | 	VIA_IRQ_ABSOLUTE = 0x0, | ||||||
|  | 	VIA_IRQ_RELATIVE = 0x1, | ||||||
|  | 	VIA_IRQ_SIGNAL = 0x10000000, | ||||||
|  | 	VIA_IRQ_FORCE_SEQUENCE = 0x20000000 | ||||||
|  | } via_irq_seq_type_t; | ||||||
|  | 
 | ||||||
|  | #define VIA_IRQ_FLAGS_MASK 0xF0000000 | ||||||
|  | 
 | ||||||
|  | enum drm_via_irqs { | ||||||
|  | 	drm_via_irq_hqv0 = 0, | ||||||
|  | 	drm_via_irq_hqv1, | ||||||
|  | 	drm_via_irq_dma0_dd, | ||||||
|  | 	drm_via_irq_dma0_td, | ||||||
|  | 	drm_via_irq_dma1_dd, | ||||||
|  | 	drm_via_irq_dma1_td, | ||||||
|  | 	drm_via_irq_num | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_via_wait_irq_request { | ||||||
|  | 	unsigned irq; | ||||||
|  | 	via_irq_seq_type_t type; | ||||||
|  | 	__u32 sequence; | ||||||
|  | 	__u32 signal; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | typedef union drm_via_irqwait { | ||||||
|  | 	struct drm_via_wait_irq_request request; | ||||||
|  | 	struct drm_wait_vblank_reply reply; | ||||||
|  | } drm_via_irqwait_t; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_via_blitsync { | ||||||
|  | 	__u32 sync_handle; | ||||||
|  | 	unsigned engine; | ||||||
|  | } drm_via_blitsync_t; | ||||||
|  | 
 | ||||||
|  | /* - * Below,"flags" is currently unused but will be used for possible future
 | ||||||
|  |  * extensions like kernel space bounce buffers for bad alignments and | ||||||
|  |  * blit engine busy-wait polling for better latency in the absence of | ||||||
|  |  * interrupts. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef struct drm_via_dmablit { | ||||||
|  | 	__u32 num_lines; | ||||||
|  | 	__u32 line_length; | ||||||
|  | 
 | ||||||
|  | 	__u32 fb_addr; | ||||||
|  | 	__u32 fb_stride; | ||||||
|  | 
 | ||||||
|  | 	unsigned char *mem_addr; | ||||||
|  | 	__u32 mem_stride; | ||||||
|  | 
 | ||||||
|  | 	__u32 flags; | ||||||
|  | 	int to_fb; | ||||||
|  | 
 | ||||||
|  | 	drm_via_blitsync_t sync; | ||||||
|  | } drm_via_dmablit_t; | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif				/* _VIA_DRM_H_ */ | ||||||
							
								
								
									
										182
									
								
								libs/common/drm/include/libdrm/virtgpu_drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								libs/common/drm/include/libdrm/virtgpu_drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,182 @@ | |||||||
|  | /*
 | ||||||
|  |  * Copyright 2013 Red Hat | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||||
|  |  * OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | #ifndef VIRTGPU_DRM_H | ||||||
|  | #define VIRTGPU_DRM_H | ||||||
|  | 
 | ||||||
|  | #include "drm.h" | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Please note that modifications to all structs defined here are
 | ||||||
|  |  * subject to backwards-compatibility constraints. | ||||||
|  |  * | ||||||
|  |  * Do not use pointers, use __u64 instead for 32 bit / 64 bit user/kernel | ||||||
|  |  * compatibility Keep fields aligned to their size | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define DRM_VIRTGPU_MAP         0x01 | ||||||
|  | #define DRM_VIRTGPU_EXECBUFFER  0x02 | ||||||
|  | #define DRM_VIRTGPU_GETPARAM    0x03 | ||||||
|  | #define DRM_VIRTGPU_RESOURCE_CREATE 0x04 | ||||||
|  | #define DRM_VIRTGPU_RESOURCE_INFO     0x05 | ||||||
|  | #define DRM_VIRTGPU_TRANSFER_FROM_HOST 0x06 | ||||||
|  | #define DRM_VIRTGPU_TRANSFER_TO_HOST 0x07 | ||||||
|  | #define DRM_VIRTGPU_WAIT     0x08 | ||||||
|  | #define DRM_VIRTGPU_GET_CAPS  0x09 | ||||||
|  | 
 | ||||||
|  | #define VIRTGPU_EXECBUF_FENCE_FD_IN	0x01 | ||||||
|  | #define VIRTGPU_EXECBUF_FENCE_FD_OUT	0x02 | ||||||
|  | #define VIRTGPU_EXECBUF_FLAGS  (\ | ||||||
|  | 		VIRTGPU_EXECBUF_FENCE_FD_IN |\ | ||||||
|  | 		VIRTGPU_EXECBUF_FENCE_FD_OUT |\ | ||||||
|  | 		0) | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_map { | ||||||
|  | 	__u64 offset; /* use for mmap system call */ | ||||||
|  | 	__u32 handle; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_execbuffer { | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u64 command; /* void* */ | ||||||
|  | 	__u64 bo_handles; | ||||||
|  | 	__u32 num_bo_handles; | ||||||
|  | 	__s32 fence_fd; /* in/out fence fd (see VIRTGPU_EXECBUF_FENCE_FD_IN/OUT) */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define VIRTGPU_PARAM_3D_FEATURES 1 /* do we have 3D features in the hw */ | ||||||
|  | #define VIRTGPU_PARAM_CAPSET_QUERY_FIX 2 /* do we have the capset fix */ | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_getparam { | ||||||
|  | 	__u64 param; | ||||||
|  | 	__u64 value; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /* NO_BO flags? NO resource flag? */ | ||||||
|  | /* resource flag for y_0_top */ | ||||||
|  | struct drm_virtgpu_resource_create { | ||||||
|  | 	__u32 target; | ||||||
|  | 	__u32 format; | ||||||
|  | 	__u32 bind; | ||||||
|  | 	__u32 width; | ||||||
|  | 	__u32 height; | ||||||
|  | 	__u32 depth; | ||||||
|  | 	__u32 array_size; | ||||||
|  | 	__u32 last_level; | ||||||
|  | 	__u32 nr_samples; | ||||||
|  | 	__u32 flags; | ||||||
|  | 	__u32 bo_handle; /* if this is set - recreate a new resource attached to this bo ? */ | ||||||
|  | 	__u32 res_handle;  /* returned by kernel */ | ||||||
|  | 	__u32 size;        /* validate transfer in the host */ | ||||||
|  | 	__u32 stride;      /* validate transfer in the host */ | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_resource_info { | ||||||
|  | 	__u32 bo_handle; | ||||||
|  | 	__u32 res_handle; | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u32 stride; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_3d_box { | ||||||
|  | 	__u32 x; | ||||||
|  | 	__u32 y; | ||||||
|  | 	__u32 z; | ||||||
|  | 	__u32 w; | ||||||
|  | 	__u32 h; | ||||||
|  | 	__u32 d; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_3d_transfer_to_host { | ||||||
|  | 	__u32 bo_handle; | ||||||
|  | 	struct drm_virtgpu_3d_box box; | ||||||
|  | 	__u32 level; | ||||||
|  | 	__u32 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_3d_transfer_from_host { | ||||||
|  | 	__u32 bo_handle; | ||||||
|  | 	struct drm_virtgpu_3d_box box; | ||||||
|  | 	__u32 level; | ||||||
|  | 	__u32 offset; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define VIRTGPU_WAIT_NOWAIT 1 /* like it */ | ||||||
|  | struct drm_virtgpu_3d_wait { | ||||||
|  | 	__u32 handle; /* 0 is an invalid handle */ | ||||||
|  | 	__u32 flags; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct drm_virtgpu_get_caps { | ||||||
|  | 	__u32 cap_set_id; | ||||||
|  | 	__u32 cap_set_ver; | ||||||
|  | 	__u64 addr; | ||||||
|  | 	__u32 size; | ||||||
|  | 	__u32 pad; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_MAP \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_MAP, struct drm_virtgpu_map) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_EXECBUFFER \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_EXECBUFFER,\ | ||||||
|  | 		struct drm_virtgpu_execbuffer) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_GETPARAM \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GETPARAM,\ | ||||||
|  | 		struct drm_virtgpu_getparam) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE			\ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE,	\ | ||||||
|  | 		struct drm_virtgpu_resource_create) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_RESOURCE_INFO \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_INFO, \ | ||||||
|  | 		 struct drm_virtgpu_resource_info) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_FROM_HOST,	\ | ||||||
|  | 		struct drm_virtgpu_3d_transfer_from_host) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_TO_HOST,	\ | ||||||
|  | 		struct drm_virtgpu_3d_transfer_to_host) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_WAIT				\ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_WAIT,	\ | ||||||
|  | 		struct drm_virtgpu_3d_wait) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_VIRTGPU_GET_CAPS \ | ||||||
|  | 	DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GET_CAPS, \ | ||||||
|  | 	struct drm_virtgpu_get_caps) | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										145
									
								
								libs/common/drm/include/tool.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								libs/common/drm/include/tool.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,145 @@ | |||||||
|  | /*
 | ||||||
|  | 
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef TOOL_H_ | ||||||
|  | #define TOOL_H_ | ||||||
|  | //在此处包含其它头文件
 | ||||||
|  | #include "stdio.h" | ||||||
|  | #include "string.h" | ||||||
|  | #include "stdlib.h" | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | #define YUV420	0 | ||||||
|  | #define YUV422 	YUV420 	+ 1 | ||||||
|  | #define YUV444 	YUV422 	+ 1 | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       ReadBmpFile | ||||||
|  | Description:    读取bmp图像到内存 | ||||||
|  | Input:          pFilePath:bmp保存路径 | ||||||
|  |                 pData:rgb图像数据内存指针,rgb图像数据排练顺序为bgrbgr...bgr;rgb值必须为8bit | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void ReadBmpFile(char *pFilePath, unsigned char *pData, int & width, int & height); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveBmpFile | ||||||
|  | Description:    把rgb图像数据保存为bmp | ||||||
|  | Input:          pFilePath:bmp保存路径 | ||||||
|  |                 pData:rgb图像数据内存指针,rgb图像数据排练顺序为bgrbgr...bgr;rgb值必须为8bit | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveBmpFile(char *pFilePath, unsigned char *pData, int width, int height); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveRaw | ||||||
|  | Description:    保存raw图 | ||||||
|  | Input:          pSavePath:raw保存路径 | ||||||
|  |                 pData:raw数据 | ||||||
|  | 				width:raw图像宽 | ||||||
|  | 				height:raw图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveRaw(char *pSavePath, short *pRawData, int width, int height); | ||||||
|  | 
 | ||||||
|  | extern void SaveRaw32bit(char *pSavePath, long *pRawData, int width, int height); | ||||||
|  | 
 | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveBmpFile2 | ||||||
|  | Description:    保存数据位宽大于8bit的bmp图像 | ||||||
|  | Input:          pFilePath:bmp保存路径 | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | 				bitValue:图像数据位宽 | ||||||
|  | 				pRGBData:rgb图像数据内存指针,rgb图像数据排练顺序为bgrbgr...bgr | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveBmpFile2(char *pFilePath, int width, int height, int bitValue, short *pRGBData); | ||||||
|  | 
 | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveYUVData | ||||||
|  | Description:    保存8bit YUV图 | ||||||
|  | Input:          pSavePath:保存路径 | ||||||
|  |                 pData:yuv数据,8bit,排列顺序yyy...yyyuuu...uuuvvv...vvv | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveYUVData(char *pSavePath, unsigned char *pData, int width, int height); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveYUVData2 | ||||||
|  | Description:    保存数据位宽大于8bit的YUV图 | ||||||
|  | Input:          pSavePath:保存路径 | ||||||
|  |                 pData:yuv数据,数据位宽大于8bit,排列顺序yyy...yyyuuu...uuuvvv...vvv | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveYUVData2(char *pSavePath, short *pData, int width, int height, int bitValue); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveYUVData1 | ||||||
|  | Description:    保存8bit YUV420图 | ||||||
|  | Input:          pSavePath:保存路径 | ||||||
|  |                 pData:yuv数据,8bit,排列顺序yyy...yyyuuu...uuuvvv...vvv | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveYUVData1(char *pSavePath, unsigned char *pData, int width, int height, int fmt); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       ReadYUVData1 | ||||||
|  | Description:    读取8bit YUV420图 | ||||||
|  | Input:          pReadPath:保存路径 | ||||||
|  |                 pData:yuv数据,8bit,排列顺序yyy...yyyuuu...uuuvvv...vvv | ||||||
|  | 				width:图像宽 | ||||||
|  | 				height:图像高 | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void ReadYUVData1(char *pReadPath, unsigned char *pData, int width, int height, int fmt); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:     Yuvfmtconv | ||||||
|  | Description:    yuv fmt conversion.444 420 422 to 444 420 422 | ||||||
|  | Input:   	pDatain 输入缓存 | ||||||
|  | 		pDataout 输出缓存 | ||||||
|  | 		width 宽 | ||||||
|  | 		height 高 | ||||||
|  | 		fmt_in 输入格式 | ||||||
|  | 		fmt_out 输出格式 | ||||||
|  | Output:	      无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void Yuvfmtconv(void *pDatain, void *pDataout, int width, int height, int fmt_in, int fmt_out, int size); | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:     Yuvbitstochar | ||||||
|  | Description:    save yuv to 8 bitdepth | ||||||
|  | Input:   	pDatain 输入缓存 | ||||||
|  | 		pDataout 输出缓存 | ||||||
|  | 		size yuv总数 | ||||||
|  | 		height 输入位宽 | ||||||
|  | Output:	      无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void Yuvbitstochar(short *pDatain, unsigned char *pDataout, int size,  int bitdepth); | ||||||
|  | 
 | ||||||
|  | /*************************************************************
 | ||||||
|  | Function:       SaveCfaBmp | ||||||
|  | Description:    将raw保存成cfa图像 | ||||||
|  | Input:          pRawData:输入的raw图; | ||||||
|  |                 width:raw图宽; | ||||||
|  | 				height:raw图高; | ||||||
|  | 				bayerPattern:bayer pattern格式,取值范围[0,3]; | ||||||
|  | 				bitValue:raw数据位宽; | ||||||
|  | Output:         无 | ||||||
|  | *************************************************************/ | ||||||
|  | extern void SaveCfaBmp(char *pFilePath, short *pRawData, int width, int height, int bayerPattern, int bitValue); | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif  // TOOL_H_
 | ||||||
							
								
								
									
										930
									
								
								libs/common/drm/include/xf86drm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										930
									
								
								libs/common/drm/include/xf86drm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,930 @@ | |||||||
|  | /**
 | ||||||
|  |  * \file xf86drm.h  | ||||||
|  |  * OS-independent header for DRM user-level library interface. | ||||||
|  |  * | ||||||
|  |  * \author Rickard E. (Rik) Faith <faith@valinux.com> | ||||||
|  |  */ | ||||||
|  |   | ||||||
|  | /*
 | ||||||
|  |  * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas. | ||||||
|  |  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | ||||||
|  |  * All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice (including the next | ||||||
|  |  * paragraph) shall be included in all copies or substantial portions of the | ||||||
|  |  * Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  |  * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||||
|  |  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||||
|  |  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||||
|  |  * DEALINGS IN THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _XF86DRM_H_ | ||||||
|  | #define _XF86DRM_H_ | ||||||
|  | 
 | ||||||
|  | #include <stdarg.h> | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <drm.h> | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef DRM_MAX_MINOR | ||||||
|  | #define DRM_MAX_MINOR   16 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(__linux__) | ||||||
|  | 
 | ||||||
|  | #define DRM_IOCTL_NR(n)		_IOC_NR(n) | ||||||
|  | #define DRM_IOC_VOID		_IOC_NONE | ||||||
|  | #define DRM_IOC_READ		_IOC_READ | ||||||
|  | #define DRM_IOC_WRITE		_IOC_WRITE | ||||||
|  | #define DRM_IOC_READWRITE	_IOC_READ|_IOC_WRITE | ||||||
|  | #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size) | ||||||
|  | 
 | ||||||
|  | #else /* One of the *BSDs */ | ||||||
|  | 
 | ||||||
|  | #include <sys/ioccom.h> | ||||||
|  | #define DRM_IOCTL_NR(n)         ((n) & 0xff) | ||||||
|  | #define DRM_IOC_VOID            IOC_VOID | ||||||
|  | #define DRM_IOC_READ            IOC_OUT | ||||||
|  | #define DRM_IOC_WRITE           IOC_IN | ||||||
|  | #define DRM_IOC_READWRITE       IOC_INOUT | ||||||
|  | #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size) | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 				/* Defaults, if nothing set in xf86config */ | ||||||
|  | #define DRM_DEV_UID	 0 | ||||||
|  | #define DRM_DEV_GID	 0 | ||||||
|  | /* Default /dev/dri directory permissions 0755 */ | ||||||
|  | #define DRM_DEV_DIRMODE	 	\ | ||||||
|  | 	(S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) | ||||||
|  | #define DRM_DEV_MODE	 (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) | ||||||
|  | 
 | ||||||
|  | #ifdef __OpenBSD__ | ||||||
|  | #define DRM_DIR_NAME  "/dev" | ||||||
|  | #define DRM_PRIMARY_MINOR_NAME  "drm" | ||||||
|  | #define DRM_CONTROL_MINOR_NAME  "drmC" | ||||||
|  | #define DRM_RENDER_MINOR_NAME   "drmR" | ||||||
|  | #else | ||||||
|  | #define DRM_DIR_NAME  "/dev/dri" | ||||||
|  | #define DRM_PRIMARY_MINOR_NAME  "card" | ||||||
|  | #define DRM_CONTROL_MINOR_NAME  "controlD" | ||||||
|  | #define DRM_RENDER_MINOR_NAME   "renderD" | ||||||
|  | #define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define DRM_DEV_NAME          "%s/" DRM_PRIMARY_MINOR_NAME "%d" | ||||||
|  | #define DRM_CONTROL_DEV_NAME  "%s/" DRM_CONTROL_MINOR_NAME "%d" | ||||||
|  | #define DRM_RENDER_DEV_NAME   "%s/" DRM_RENDER_MINOR_NAME  "%d" | ||||||
|  | 
 | ||||||
|  | #define DRM_NODE_NAME_MAX \ | ||||||
|  |     (sizeof(DRM_DIR_NAME) + 1 /* slash */ \ | ||||||
|  |      + MAX3(sizeof(DRM_PRIMARY_MINOR_NAME), \ | ||||||
|  |             sizeof(DRM_CONTROL_MINOR_NAME), \ | ||||||
|  |             sizeof(DRM_RENDER_MINOR_NAME)) \ | ||||||
|  |      + sizeof("144") /* highest possible node number */ \ | ||||||
|  |      + 1) /* NULL-terminator */ | ||||||
|  | 
 | ||||||
|  | #define DRM_ERR_NO_DEVICE  (-1001) | ||||||
|  | #define DRM_ERR_NO_ACCESS  (-1002) | ||||||
|  | #define DRM_ERR_NOT_ROOT   (-1003) | ||||||
|  | #define DRM_ERR_INVALID    (-1004) | ||||||
|  | #define DRM_ERR_NO_FD      (-1005) | ||||||
|  | 
 | ||||||
|  | #define DRM_AGP_NO_HANDLE 0 | ||||||
|  | 
 | ||||||
|  | typedef unsigned int  drmSize,     *drmSizePtr;	    /**< For mapped regions */ | ||||||
|  | typedef void          *drmAddress, **drmAddressPtr; /**< For mapped regions */ | ||||||
|  | 
 | ||||||
|  | #if (__GNUC__ >= 3) | ||||||
|  | #define DRM_PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a))) | ||||||
|  | #else | ||||||
|  | #define DRM_PRINTFLIKE(f, a) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | typedef struct _drmServerInfo { | ||||||
|  |   int (*debug_print)(const char *format, va_list ap) DRM_PRINTFLIKE(1,0); | ||||||
|  |   int (*load_module)(const char *name); | ||||||
|  |   void (*get_perms)(gid_t *, mode_t *); | ||||||
|  | } drmServerInfo, *drmServerInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct drmHashEntry { | ||||||
|  |     int      fd; | ||||||
|  |     void     (*f)(int, void *, void *); | ||||||
|  |     void     *tagTable; | ||||||
|  | } drmHashEntry; | ||||||
|  | 
 | ||||||
|  | extern int drmIoctl(int fd, unsigned long request, void *arg); | ||||||
|  | extern void *drmGetHashTable(void); | ||||||
|  | extern drmHashEntry *drmGetEntry(int fd); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Driver version information. | ||||||
|  |  * | ||||||
|  |  * \sa drmGetVersion() and drmSetVersion(). | ||||||
|  |  */ | ||||||
|  | typedef struct _drmVersion { | ||||||
|  |     int     version_major;        /**< Major version */ | ||||||
|  |     int     version_minor;        /**< Minor version */ | ||||||
|  |     int     version_patchlevel;   /**< Patch level */ | ||||||
|  |     int     name_len; 	          /**< Length of name buffer */ | ||||||
|  |     char    *name;	          /**< Name of driver */ | ||||||
|  |     int     date_len;             /**< Length of date buffer */ | ||||||
|  |     char    *date;                /**< User-space buffer to hold date */ | ||||||
|  |     int     desc_len;	          /**< Length of desc buffer */ | ||||||
|  |     char    *desc;                /**< User-space buffer to hold desc */ | ||||||
|  | } drmVersion, *drmVersionPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmStats { | ||||||
|  |     unsigned long count;	     /**< Number of data */ | ||||||
|  |     struct { | ||||||
|  | 	unsigned long value;	     /**< Value from kernel */ | ||||||
|  | 	const char    *long_format;  /**< Suggested format for long_name */ | ||||||
|  | 	const char    *long_name;    /**< Long name for value */ | ||||||
|  | 	const char    *rate_format;  /**< Suggested format for rate_name */ | ||||||
|  | 	const char    *rate_name;    /**< Short name for value per second */ | ||||||
|  | 	int           isvalue;       /**< True if value (vs. counter) */ | ||||||
|  | 	const char    *mult_names;   /**< Multiplier names (e.g., "KGM") */ | ||||||
|  | 	int           mult;          /**< Multiplier value (e.g., 1024) */ | ||||||
|  | 	int           verbose;       /**< Suggest only in verbose output */ | ||||||
|  |     } data[15]; | ||||||
|  | } drmStatsT; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 				/* All of these enums *MUST* match with the
 | ||||||
|  |                                    kernel implementation -- so do *NOT* | ||||||
|  |                                    change them!  (The drmlib implementation | ||||||
|  |                                    will just copy the flags instead of | ||||||
|  |                                    translating them.) */ | ||||||
|  | typedef enum { | ||||||
|  |     DRM_FRAME_BUFFER    = 0,      /**< WC, no caching, no core dump */ | ||||||
|  |     DRM_REGISTERS       = 1,      /**< no caching, no core dump */ | ||||||
|  |     DRM_SHM             = 2,      /**< shared, cached */ | ||||||
|  |     DRM_AGP             = 3,	  /**< AGP/GART */ | ||||||
|  |     DRM_SCATTER_GATHER  = 4,	  /**< PCI scatter/gather */ | ||||||
|  |     DRM_CONSISTENT      = 5	  /**< PCI consistent */ | ||||||
|  | } drmMapType; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  |     DRM_RESTRICTED      = 0x0001, /**< Cannot be mapped to client-virtual */ | ||||||
|  |     DRM_READ_ONLY       = 0x0002, /**< Read-only in client-virtual */ | ||||||
|  |     DRM_LOCKED          = 0x0004, /**< Physical pages locked */ | ||||||
|  |     DRM_KERNEL          = 0x0008, /**< Kernel requires access */ | ||||||
|  |     DRM_WRITE_COMBINING = 0x0010, /**< Use write-combining, if available */ | ||||||
|  |     DRM_CONTAINS_LOCK   = 0x0020, /**< SHM page that contains lock */ | ||||||
|  |     DRM_REMOVABLE	= 0x0040  /**< Removable mapping */ | ||||||
|  | } drmMapFlags; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * \warning These values *MUST* match drm.h | ||||||
|  |  */ | ||||||
|  | typedef enum { | ||||||
|  |     /** \name Flags for DMA buffer dispatch */ | ||||||
|  |     /*@{*/ | ||||||
|  |     DRM_DMA_BLOCK        = 0x01, /**< 
 | ||||||
|  | 				  * Block until buffer dispatched. | ||||||
|  | 				  *  | ||||||
|  | 				  * \note the buffer may not yet have been | ||||||
|  | 				  * processed by the hardware -- getting a | ||||||
|  | 				  * hardware lock with the hardware quiescent | ||||||
|  | 				  * will ensure that the buffer has been | ||||||
|  | 				  * processed. | ||||||
|  | 				  */ | ||||||
|  |     DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */ | ||||||
|  |     DRM_DMA_PRIORITY     = 0x04, /**< High priority dispatch */ | ||||||
|  |     /*@}*/ | ||||||
|  | 
 | ||||||
|  |     /** \name Flags for DMA buffer request */ | ||||||
|  |     /*@{*/ | ||||||
|  |     DRM_DMA_WAIT         = 0x10, /**< Wait for free buffers */ | ||||||
|  |     DRM_DMA_SMALLER_OK   = 0x20, /**< Smaller-than-requested buffers OK */ | ||||||
|  |     DRM_DMA_LARGER_OK    = 0x40  /**< Larger-than-requested buffers OK */ | ||||||
|  |     /*@}*/ | ||||||
|  | } drmDMAFlags; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  |     DRM_PAGE_ALIGN       = 0x01, | ||||||
|  |     DRM_AGP_BUFFER       = 0x02, | ||||||
|  |     DRM_SG_BUFFER        = 0x04, | ||||||
|  |     DRM_FB_BUFFER        = 0x08, | ||||||
|  |     DRM_PCI_BUFFER_RO    = 0x10 | ||||||
|  | } drmBufDescFlags; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  |     DRM_LOCK_READY      = 0x01, /**< Wait until hardware is ready for DMA */ | ||||||
|  |     DRM_LOCK_QUIESCENT  = 0x02, /**< Wait until hardware quiescent */ | ||||||
|  |     DRM_LOCK_FLUSH      = 0x04, /**< Flush this context's DMA queue first */ | ||||||
|  |     DRM_LOCK_FLUSH_ALL  = 0x08, /**< Flush all DMA queues first */ | ||||||
|  | 				/* These *HALT* flags aren't supported yet
 | ||||||
|  |                                    -- they will be used to support the | ||||||
|  |                                    full-screen DGA-like mode. */ | ||||||
|  |     DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */ | ||||||
|  |     DRM_HALT_CUR_QUEUES = 0x20  /**< Halt all current queues */ | ||||||
|  | } drmLockFlags; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  |     DRM_CONTEXT_PRESERVED = 0x01, /**< This context is preserved and
 | ||||||
|  | 				     never swapped. */ | ||||||
|  |     DRM_CONTEXT_2DONLY    = 0x02  /**< This context is for 2D rendering only. */ | ||||||
|  | } drm_context_tFlags, *drm_context_tFlagsPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmBufDesc { | ||||||
|  |     int              count;	  /**< Number of buffers of this size */ | ||||||
|  |     int              size;	  /**< Size in bytes */ | ||||||
|  |     int              low_mark;	  /**< Low water mark */ | ||||||
|  |     int              high_mark;	  /**< High water mark */ | ||||||
|  | } drmBufDesc, *drmBufDescPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmBufInfo { | ||||||
|  |     int              count;	  /**< Number of buffers described in list */ | ||||||
|  |     drmBufDescPtr    list;	  /**< List of buffer descriptions */ | ||||||
|  | } drmBufInfo, *drmBufInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmBuf { | ||||||
|  |     int              idx;	  /**< Index into the master buffer list */ | ||||||
|  |     int              total;	  /**< Buffer size */ | ||||||
|  |     int              used;	  /**< Amount of buffer in use (for DMA) */ | ||||||
|  |     drmAddress       address;	  /**< Address */ | ||||||
|  | } drmBuf, *drmBufPtr; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Buffer mapping information. | ||||||
|  |  * | ||||||
|  |  * Used by drmMapBufs() and drmUnmapBufs() to store information about the | ||||||
|  |  * mapped buffers. | ||||||
|  |  */ | ||||||
|  | typedef struct _drmBufMap { | ||||||
|  |     int              count;	  /**< Number of buffers mapped */ | ||||||
|  |     drmBufPtr        list;	  /**< Buffers */ | ||||||
|  | } drmBufMap, *drmBufMapPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmLock { | ||||||
|  |     volatile unsigned int lock; | ||||||
|  |     char                      padding[60]; | ||||||
|  |     /* This is big enough for most current (and future?) architectures:
 | ||||||
|  |        DEC Alpha:              32 bytes | ||||||
|  |        Intel Merced:           ? | ||||||
|  |        Intel P5/PPro/PII/PIII: 32 bytes | ||||||
|  |        Intel StrongARM:        32 bytes | ||||||
|  |        Intel i386/i486:        16 bytes | ||||||
|  |        MIPS:                   32 bytes (?) | ||||||
|  |        Motorola 68k:           16 bytes | ||||||
|  |        Motorola PowerPC:       32 bytes | ||||||
|  |        Sun SPARC:              32 bytes | ||||||
|  |     */ | ||||||
|  | } drmLock, *drmLockPtr; | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Indices here refer to the offset into | ||||||
|  |  * list in drmBufInfo | ||||||
|  |  */ | ||||||
|  | typedef struct _drmDMAReq { | ||||||
|  |     drm_context_t    context;  	  /**< Context handle */ | ||||||
|  |     int           send_count;     /**< Number of buffers to send */ | ||||||
|  |     int           *send_list;     /**< List of handles to buffers */ | ||||||
|  |     int           *send_sizes;    /**< Lengths of data to send, in bytes */ | ||||||
|  |     drmDMAFlags   flags;          /**< Flags */ | ||||||
|  |     int           request_count;  /**< Number of buffers requested */ | ||||||
|  |     int           request_size;	  /**< Desired size of buffers requested */ | ||||||
|  |     int           *request_list;  /**< Buffer information */ | ||||||
|  |     int           *request_sizes; /**< Minimum acceptable sizes */ | ||||||
|  |     int           granted_count;  /**< Number of buffers granted at this size */ | ||||||
|  | } drmDMAReq, *drmDMAReqPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmRegion { | ||||||
|  |     drm_handle_t     handle; | ||||||
|  |     unsigned int  offset; | ||||||
|  |     drmSize       size; | ||||||
|  |     drmAddress    map; | ||||||
|  | } drmRegion, *drmRegionPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmTextureRegion { | ||||||
|  |     unsigned char next; | ||||||
|  |     unsigned char prev; | ||||||
|  |     unsigned char in_use; | ||||||
|  |     unsigned char padding;	/**< Explicitly pad this out */ | ||||||
|  |     unsigned int  age; | ||||||
|  | } drmTextureRegion, *drmTextureRegionPtr; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  |     DRM_VBLANK_ABSOLUTE = 0x0,	/**< Wait for specific vblank sequence number */ | ||||||
|  |     DRM_VBLANK_RELATIVE = 0x1,	/**< Wait for given number of vblanks */ | ||||||
|  |     /* bits 1-6 are reserved for high crtcs */ | ||||||
|  |     DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e, | ||||||
|  |     DRM_VBLANK_EVENT = 0x4000000,	/**< Send event instead of blocking */ | ||||||
|  |     DRM_VBLANK_FLIP = 0x8000000,	/**< Scheduled buffer swap should flip */ | ||||||
|  |     DRM_VBLANK_NEXTONMISS = 0x10000000,	/**< If missed, wait for next vblank */ | ||||||
|  |     DRM_VBLANK_SECONDARY = 0x20000000,	/**< Secondary display controller */ | ||||||
|  |     DRM_VBLANK_SIGNAL   = 0x40000000	/* Send signal instead of blocking */ | ||||||
|  | } drmVBlankSeqType; | ||||||
|  | #define DRM_VBLANK_HIGH_CRTC_SHIFT 1 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmVBlankReq { | ||||||
|  | 	drmVBlankSeqType type; | ||||||
|  | 	unsigned int sequence; | ||||||
|  | 	unsigned long signal; | ||||||
|  | } drmVBlankReq, *drmVBlankReqPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmVBlankReply { | ||||||
|  | 	drmVBlankSeqType type; | ||||||
|  | 	unsigned int sequence; | ||||||
|  | 	long tval_sec; | ||||||
|  | 	long tval_usec; | ||||||
|  | } drmVBlankReply, *drmVBlankReplyPtr; | ||||||
|  | 
 | ||||||
|  | typedef union _drmVBlank { | ||||||
|  | 	drmVBlankReq request; | ||||||
|  | 	drmVBlankReply reply; | ||||||
|  | } drmVBlank, *drmVBlankPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmSetVersion { | ||||||
|  | 	int drm_di_major; | ||||||
|  | 	int drm_di_minor; | ||||||
|  | 	int drm_dd_major; | ||||||
|  | 	int drm_dd_minor; | ||||||
|  | } drmSetVersion, *drmSetVersionPtr; | ||||||
|  | 
 | ||||||
|  | #define __drm_dummy_lock(lock) (*(__volatile__ unsigned int *)lock) | ||||||
|  | 
 | ||||||
|  | #define DRM_LOCK_HELD  0x80000000U /**< Hardware lock is held */ | ||||||
|  | #define DRM_LOCK_CONT  0x40000000U /**< Hardware lock is contended */ | ||||||
|  | 
 | ||||||
|  | #if defined(__GNUC__) && (__GNUC__ >= 2) | ||||||
|  | # if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__) | ||||||
|  | 				/* Reflect changes here to drmP.h */ | ||||||
|  | #define DRM_CAS(lock,old,new,__ret)                                    \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |                 int __dummy;	/* Can't mark eax as clobbered */      \ | ||||||
|  | 		__asm__ __volatile__(                                  \ | ||||||
|  | 			"lock ; cmpxchg %4,%1\n\t"                     \ | ||||||
|  |                         "setnz %0"                                     \ | ||||||
|  | 			: "=d" (__ret),                                \ | ||||||
|  |    			  "=m" (__drm_dummy_lock(lock)),               \ | ||||||
|  |                           "=a" (__dummy)                               \ | ||||||
|  | 			: "2" (old),                                   \ | ||||||
|  | 			  "r" (new));                                  \ | ||||||
|  | 	} while (0) | ||||||
|  | 
 | ||||||
|  | #elif defined(__alpha__) | ||||||
|  | 
 | ||||||
|  | #define	DRM_CAS(lock, old, new, ret)		\ | ||||||
|  | 	do {					\ | ||||||
|  | 		int tmp, old32;			\ | ||||||
|  | 		__asm__ __volatile__(		\ | ||||||
|  | 		"	addl	$31, %5, %3\n"	\ | ||||||
|  | 		"1:	ldl_l	%0, %2\n"	\ | ||||||
|  | 		"	cmpeq	%0, %3, %1\n"	\ | ||||||
|  | 		"	beq	%1, 2f\n"	\ | ||||||
|  | 		"	mov	%4, %0\n"	\ | ||||||
|  | 		"	stl_c	%0, %2\n"	\ | ||||||
|  | 		"	beq	%0, 3f\n"	\ | ||||||
|  | 		"	mb\n"			\ | ||||||
|  | 		"2:	cmpeq	%1, 0, %1\n"	\ | ||||||
|  | 		".subsection 2\n"		\ | ||||||
|  | 		"3:	br	1b\n"		\ | ||||||
|  | 		".previous"			\ | ||||||
|  | 		: "=&r"(tmp), "=&r"(ret),	\ | ||||||
|  | 		  "=m"(__drm_dummy_lock(lock)),	\ | ||||||
|  | 		  "=&r"(old32)			\ | ||||||
|  | 		: "r"(new), "r"(old)		\ | ||||||
|  | 		: "memory");			\ | ||||||
|  | 	} while (0) | ||||||
|  | 
 | ||||||
|  | #elif defined(__sparc__) | ||||||
|  | 
 | ||||||
|  | #define DRM_CAS(lock,old,new,__ret)				\ | ||||||
|  | do {	register unsigned int __old __asm("o0");		\ | ||||||
|  | 	register unsigned int __new __asm("o1");		\ | ||||||
|  | 	register volatile unsigned int *__lock __asm("o2");	\ | ||||||
|  | 	__old = old;						\ | ||||||
|  | 	__new = new;						\ | ||||||
|  | 	__lock = (volatile unsigned int *)lock;			\ | ||||||
|  | 	__asm__ __volatile__(					\ | ||||||
|  | 		/*"cas [%2], %3, %0"*/				\ | ||||||
|  | 		".word 0xd3e29008\n\t"				\ | ||||||
|  | 		/*"membar #StoreStore | #StoreLoad"*/		\ | ||||||
|  | 		".word 0x8143e00a"				\ | ||||||
|  | 		: "=&r" (__new)					\ | ||||||
|  | 		: "0" (__new),					\ | ||||||
|  | 		  "r" (__lock),					\ | ||||||
|  | 		  "r" (__old)					\ | ||||||
|  | 		: "memory");					\ | ||||||
|  | 	__ret = (__new != __old);				\ | ||||||
|  | } while(0) | ||||||
|  | 
 | ||||||
|  | #elif defined(__ia64__) | ||||||
|  | 
 | ||||||
|  | #ifdef __INTEL_COMPILER | ||||||
|  | /* this currently generates bad code (missing stop bits)... */ | ||||||
|  | #include <ia64intrin.h> | ||||||
|  | 
 | ||||||
|  | #define DRM_CAS(lock,old,new,__ret)					      \ | ||||||
|  | 	do {								      \ | ||||||
|  | 		unsigned long __result, __old = (old) & 0xffffffff;		\ | ||||||
|  | 		__mf();							      	\ | ||||||
|  | 		__result = _InterlockedCompareExchange_acq(&__drm_dummy_lock(lock), (new), __old);\ | ||||||
|  | 		__ret = (__result) != (__old);					\ | ||||||
|  | /*		__ret = (__sync_val_compare_and_swap(&__drm_dummy_lock(lock), \
 | ||||||
|  | 						     (old), (new))	      \ | ||||||
|  | 			 != (old));					      */\ | ||||||
|  | 	} while (0) | ||||||
|  | 
 | ||||||
|  | #else | ||||||
|  | #define DRM_CAS(lock,old,new,__ret)					  \ | ||||||
|  | 	do {								  \ | ||||||
|  | 		unsigned int __result, __old = (old);			  \ | ||||||
|  | 		__asm__ __volatile__(					  \ | ||||||
|  | 			"mf\n"						  \ | ||||||
|  | 			"mov ar.ccv=%2\n"				  \ | ||||||
|  | 			";;\n"						  \ | ||||||
|  | 			"cmpxchg4.acq %0=%1,%3,ar.ccv"			  \ | ||||||
|  | 			: "=r" (__result), "=m" (__drm_dummy_lock(lock))  \ | ||||||
|  | 			: "r" ((unsigned long)__old), "r" (new)			  \ | ||||||
|  | 			: "memory");					  \ | ||||||
|  | 		__ret = (__result) != (__old);				  \ | ||||||
|  | 	} while (0) | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #elif defined(__powerpc__) | ||||||
|  | 
 | ||||||
|  | #define DRM_CAS(lock,old,new,__ret)			\ | ||||||
|  | 	do {						\ | ||||||
|  | 		__asm__ __volatile__(			\ | ||||||
|  | 			"sync;"				\ | ||||||
|  | 			"0:    lwarx %0,0,%1;"		\ | ||||||
|  | 			"      xor. %0,%3,%0;"		\ | ||||||
|  | 			"      bne 1f;"			\ | ||||||
|  | 			"      stwcx. %2,0,%1;"		\ | ||||||
|  | 			"      bne- 0b;"		\ | ||||||
|  | 			"1:    "			\ | ||||||
|  | 			"sync;"				\ | ||||||
|  | 		: "=&r"(__ret)				\ | ||||||
|  | 		: "r"(lock), "r"(new), "r"(old)		\ | ||||||
|  | 		: "cr0", "memory");			\ | ||||||
|  | 	} while (0) | ||||||
|  | 
 | ||||||
|  | # elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ | ||||||
|  | 	|| defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \ | ||||||
|  | 	|| defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) \ | ||||||
|  | 	|| defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ | ||||||
|  | 	|| defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ | ||||||
|  | 	|| defined(__ARM_ARCH_7EM__) | ||||||
|  |        #undef DRM_DEV_MODE | ||||||
|  |        #define DRM_DEV_MODE     (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) | ||||||
|  | 
 | ||||||
|  |        #define DRM_CAS(lock,old,new,__ret)             \ | ||||||
|  |        do {                                            \ | ||||||
|  |                __asm__ __volatile__ (                  \ | ||||||
|  |                        "1: ldrex %0, [%1]\n"           \ | ||||||
|  |                        "   teq %0, %2\n"               \ | ||||||
|  |                        "   ite eq\n"                   \ | ||||||
|  |                        "   strexeq %0, %3, [%1]\n"     \ | ||||||
|  |                        "   movne   %0, #1\n"           \ | ||||||
|  |                : "=&r" (__ret)                         \ | ||||||
|  |                : "r" (lock), "r" (old), "r" (new)      \ | ||||||
|  |                : "cc","memory");                       \ | ||||||
|  |        } while (0) | ||||||
|  | 
 | ||||||
|  | #endif /* architecture */ | ||||||
|  | #endif /* __GNUC__ >= 2 */ | ||||||
|  | 
 | ||||||
|  | #ifndef DRM_CAS | ||||||
|  | #define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(__alpha__) | ||||||
|  | #define DRM_CAS_RESULT(_result)		long _result | ||||||
|  | #elif defined(__powerpc__) | ||||||
|  | #define DRM_CAS_RESULT(_result)		int _result | ||||||
|  | #else | ||||||
|  | #define DRM_CAS_RESULT(_result)		char _result | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define DRM_LIGHT_LOCK(fd,lock,context)                                \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |                 DRM_CAS_RESULT(__ret);                                 \ | ||||||
|  | 		DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret);     \ | ||||||
|  |                 if (__ret) drmGetLock(fd,context,0);                   \ | ||||||
|  |         } while(0) | ||||||
|  | 
 | ||||||
|  | 				/* This one counts fast locks -- for
 | ||||||
|  |                                    benchmarking only. */ | ||||||
|  | #define DRM_LIGHT_LOCK_COUNT(fd,lock,context,count)                    \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |                 DRM_CAS_RESULT(__ret);                                 \ | ||||||
|  | 		DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret);     \ | ||||||
|  |                 if (__ret) drmGetLock(fd,context,0);                   \ | ||||||
|  |                 else       ++count;                                    \ | ||||||
|  |         } while(0) | ||||||
|  | 
 | ||||||
|  | #define DRM_LOCK(fd,lock,context,flags)                                \ | ||||||
|  | 	do {                                                           \ | ||||||
|  | 		if (flags) drmGetLock(fd,context,flags);               \ | ||||||
|  | 		else       DRM_LIGHT_LOCK(fd,lock,context);            \ | ||||||
|  | 	} while(0) | ||||||
|  | 
 | ||||||
|  | #define DRM_UNLOCK(fd,lock,context)                                    \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |                 DRM_CAS_RESULT(__ret);                                 \ | ||||||
|  | 		DRM_CAS(lock,DRM_LOCK_HELD|context,context,__ret);     \ | ||||||
|  |                 if (__ret) drmUnlock(fd,context);                      \ | ||||||
|  |         } while(0) | ||||||
|  | 
 | ||||||
|  | 				/* Simple spin locks */ | ||||||
|  | #define DRM_SPINLOCK(spin,val)                                         \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |             DRM_CAS_RESULT(__ret);                                     \ | ||||||
|  | 	    do {                                                       \ | ||||||
|  | 		DRM_CAS(spin,0,val,__ret);                             \ | ||||||
|  | 		if (__ret) while ((spin)->lock);                       \ | ||||||
|  | 	    } while (__ret);                                           \ | ||||||
|  | 	} while(0) | ||||||
|  | 
 | ||||||
|  | #define DRM_SPINLOCK_TAKE(spin,val)                                    \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |             DRM_CAS_RESULT(__ret);                                     \ | ||||||
|  |             int  cur;                                                  \ | ||||||
|  | 	    do {                                                       \ | ||||||
|  |                 cur = (*spin).lock;                                    \ | ||||||
|  | 		DRM_CAS(spin,cur,val,__ret);                           \ | ||||||
|  | 	    } while (__ret);                                           \ | ||||||
|  | 	} while(0) | ||||||
|  | 
 | ||||||
|  | #define DRM_SPINLOCK_COUNT(spin,val,count,__ret)                       \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |             int  __i;                                                  \ | ||||||
|  |             __ret = 1;                                                 \ | ||||||
|  |             for (__i = 0; __ret && __i < count; __i++) {               \ | ||||||
|  | 		DRM_CAS(spin,0,val,__ret);                             \ | ||||||
|  | 		if (__ret) for (;__i < count && (spin)->lock; __i++);  \ | ||||||
|  | 	    }                                                          \ | ||||||
|  | 	} while(0) | ||||||
|  | 
 | ||||||
|  | #define DRM_SPINUNLOCK(spin,val)                                       \ | ||||||
|  | 	do {                                                           \ | ||||||
|  |             DRM_CAS_RESULT(__ret);                                     \ | ||||||
|  |             if ((*spin).lock == val) { /* else server stole lock */    \ | ||||||
|  | 	        do {                                                   \ | ||||||
|  | 		    DRM_CAS(spin,val,0,__ret);                         \ | ||||||
|  | 	        } while (__ret);                                       \ | ||||||
|  |             }                                                          \ | ||||||
|  | 	} while(0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* General user-level programmer's API: unprivileged */ | ||||||
|  | extern int           drmAvailable(void); | ||||||
|  | extern int           drmOpen(const char *name, const char *busid); | ||||||
|  | 
 | ||||||
|  | #define DRM_NODE_PRIMARY 0 | ||||||
|  | #define DRM_NODE_CONTROL 1 | ||||||
|  | #define DRM_NODE_RENDER  2 | ||||||
|  | #define DRM_NODE_MAX     3 | ||||||
|  | 
 | ||||||
|  | extern int           drmOpenWithType(const char *name, const char *busid, | ||||||
|  |                                      int type); | ||||||
|  | 
 | ||||||
|  | extern int           drmOpenControl(int minor); | ||||||
|  | extern int           drmOpenRender(int minor); | ||||||
|  | extern int           drmClose(int fd); | ||||||
|  | extern drmVersionPtr drmGetVersion(int fd); | ||||||
|  | extern drmVersionPtr drmGetLibVersion(int fd); | ||||||
|  | extern int           drmGetCap(int fd, uint64_t capability, uint64_t *value); | ||||||
|  | extern void          drmFreeVersion(drmVersionPtr); | ||||||
|  | extern int           drmGetMagic(int fd, drm_magic_t * magic); | ||||||
|  | extern char          *drmGetBusid(int fd); | ||||||
|  | extern int           drmGetInterruptFromBusID(int fd, int busnum, int devnum, | ||||||
|  | 					      int funcnum); | ||||||
|  | extern int           drmGetMap(int fd, int idx, drm_handle_t *offset, | ||||||
|  | 			       drmSize *size, drmMapType *type, | ||||||
|  | 			       drmMapFlags *flags, drm_handle_t *handle, | ||||||
|  | 			       int *mtrr); | ||||||
|  | extern int           drmGetClient(int fd, int idx, int *auth, int *pid, | ||||||
|  | 				  int *uid, unsigned long *magic, | ||||||
|  | 				  unsigned long *iocs); | ||||||
|  | extern int           drmGetStats(int fd, drmStatsT *stats); | ||||||
|  | extern int           drmSetInterfaceVersion(int fd, drmSetVersion *version); | ||||||
|  | extern int           drmCommandNone(int fd, unsigned long drmCommandIndex); | ||||||
|  | extern int           drmCommandRead(int fd, unsigned long drmCommandIndex, | ||||||
|  |                                     void *data, unsigned long size); | ||||||
|  | extern int           drmCommandWrite(int fd, unsigned long drmCommandIndex, | ||||||
|  |                                      void *data, unsigned long size); | ||||||
|  | extern int           drmCommandWriteRead(int fd, unsigned long drmCommandIndex, | ||||||
|  |                                          void *data, unsigned long size); | ||||||
|  | 
 | ||||||
|  | /* General user-level programmer's API: X server (root) only  */ | ||||||
|  | extern void          drmFreeBusid(const char *busid); | ||||||
|  | extern int           drmSetBusid(int fd, const char *busid); | ||||||
|  | extern int           drmAuthMagic(int fd, drm_magic_t magic); | ||||||
|  | extern int           drmAddMap(int fd, | ||||||
|  | 			       drm_handle_t offset, | ||||||
|  | 			       drmSize size, | ||||||
|  | 			       drmMapType type, | ||||||
|  | 			       drmMapFlags flags, | ||||||
|  | 			       drm_handle_t * handle); | ||||||
|  | extern int	     drmRmMap(int fd, drm_handle_t handle); | ||||||
|  | extern int	     drmAddContextPrivateMapping(int fd, drm_context_t ctx_id, | ||||||
|  | 						 drm_handle_t handle); | ||||||
|  | 
 | ||||||
|  | extern int           drmAddBufs(int fd, int count, int size, | ||||||
|  | 				drmBufDescFlags flags, | ||||||
|  | 				int agp_offset); | ||||||
|  | extern int           drmMarkBufs(int fd, double low, double high); | ||||||
|  | extern int           drmCreateContext(int fd, drm_context_t * handle); | ||||||
|  | extern int           drmSetContextFlags(int fd, drm_context_t context, | ||||||
|  | 					drm_context_tFlags flags); | ||||||
|  | extern int           drmGetContextFlags(int fd, drm_context_t context, | ||||||
|  | 					drm_context_tFlagsPtr flags); | ||||||
|  | extern int           drmAddContextTag(int fd, drm_context_t context, void *tag); | ||||||
|  | extern int           drmDelContextTag(int fd, drm_context_t context); | ||||||
|  | extern void          *drmGetContextTag(int fd, drm_context_t context); | ||||||
|  | extern drm_context_t * drmGetReservedContextList(int fd, int *count); | ||||||
|  | extern void          drmFreeReservedContextList(drm_context_t *); | ||||||
|  | extern int           drmSwitchToContext(int fd, drm_context_t context); | ||||||
|  | extern int           drmDestroyContext(int fd, drm_context_t handle); | ||||||
|  | extern int           drmCreateDrawable(int fd, drm_drawable_t * handle); | ||||||
|  | extern int           drmDestroyDrawable(int fd, drm_drawable_t handle); | ||||||
|  | extern int           drmUpdateDrawableInfo(int fd, drm_drawable_t handle, | ||||||
|  | 					   drm_drawable_info_type_t type, | ||||||
|  | 					   unsigned int num, void *data); | ||||||
|  | extern int           drmCtlInstHandler(int fd, int irq); | ||||||
|  | extern int           drmCtlUninstHandler(int fd); | ||||||
|  | extern int           drmSetClientCap(int fd, uint64_t capability, | ||||||
|  | 				     uint64_t value); | ||||||
|  | 
 | ||||||
|  | extern int           drmCrtcGetSequence(int fd, uint32_t crtcId, | ||||||
|  | 					uint64_t *sequence, uint64_t *ns); | ||||||
|  | extern int           drmCrtcQueueSequence(int fd, uint32_t crtcId, | ||||||
|  | 					  uint32_t flags, uint64_t sequence, | ||||||
|  | 					  uint64_t *sequence_queued, | ||||||
|  | 					  uint64_t user_data); | ||||||
|  | /* General user-level programmer's API: authenticated client and/or X */ | ||||||
|  | extern int           drmMap(int fd, | ||||||
|  | 			    drm_handle_t handle, | ||||||
|  | 			    drmSize size, | ||||||
|  | 			    drmAddressPtr address); | ||||||
|  | extern int           drmUnmap(drmAddress address, drmSize size); | ||||||
|  | extern drmBufInfoPtr drmGetBufInfo(int fd); | ||||||
|  | extern drmBufMapPtr  drmMapBufs(int fd); | ||||||
|  | extern int           drmUnmapBufs(drmBufMapPtr bufs); | ||||||
|  | extern int           drmDMA(int fd, drmDMAReqPtr request); | ||||||
|  | extern int           drmFreeBufs(int fd, int count, int *list); | ||||||
|  | extern int           drmGetLock(int fd, | ||||||
|  | 			        drm_context_t context, | ||||||
|  | 			        drmLockFlags flags); | ||||||
|  | extern int           drmUnlock(int fd, drm_context_t context); | ||||||
|  | extern int           drmFinish(int fd, int context, drmLockFlags flags); | ||||||
|  | extern int	     drmGetContextPrivateMapping(int fd, drm_context_t ctx_id,  | ||||||
|  | 						 drm_handle_t * handle); | ||||||
|  | 
 | ||||||
|  | /* AGP/GART support: X server (root) only */ | ||||||
|  | extern int           drmAgpAcquire(int fd); | ||||||
|  | extern int           drmAgpRelease(int fd); | ||||||
|  | extern int           drmAgpEnable(int fd, unsigned long mode); | ||||||
|  | extern int           drmAgpAlloc(int fd, unsigned long size, | ||||||
|  | 				 unsigned long type, unsigned long *address, | ||||||
|  | 				 drm_handle_t *handle); | ||||||
|  | extern int           drmAgpFree(int fd, drm_handle_t handle); | ||||||
|  | extern int 	     drmAgpBind(int fd, drm_handle_t handle, | ||||||
|  | 				unsigned long offset); | ||||||
|  | extern int           drmAgpUnbind(int fd, drm_handle_t handle); | ||||||
|  | 
 | ||||||
|  | /* AGP/GART info: authenticated client and/or X */ | ||||||
|  | extern int           drmAgpVersionMajor(int fd); | ||||||
|  | extern int           drmAgpVersionMinor(int fd); | ||||||
|  | extern unsigned long drmAgpGetMode(int fd); | ||||||
|  | extern unsigned long drmAgpBase(int fd); /* Physical location */ | ||||||
|  | extern unsigned long drmAgpSize(int fd); /* Bytes */ | ||||||
|  | extern unsigned long drmAgpMemoryUsed(int fd); | ||||||
|  | extern unsigned long drmAgpMemoryAvail(int fd); | ||||||
|  | extern unsigned int  drmAgpVendorId(int fd); | ||||||
|  | extern unsigned int  drmAgpDeviceId(int fd); | ||||||
|  | 
 | ||||||
|  | /* PCI scatter/gather support: X server (root) only */ | ||||||
|  | extern int           drmScatterGatherAlloc(int fd, unsigned long size, | ||||||
|  | 					   drm_handle_t *handle); | ||||||
|  | extern int           drmScatterGatherFree(int fd, drm_handle_t handle); | ||||||
|  | 
 | ||||||
|  | extern int           drmWaitVBlank(int fd, drmVBlankPtr vbl); | ||||||
|  | 
 | ||||||
|  | /* Support routines */ | ||||||
|  | extern void          drmSetServerInfo(drmServerInfoPtr info); | ||||||
|  | extern int           drmError(int err, const char *label); | ||||||
|  | extern void          *drmMalloc(int size); | ||||||
|  | extern void          drmFree(void *pt); | ||||||
|  | 
 | ||||||
|  | /* Hash table routines */ | ||||||
|  | extern void *drmHashCreate(void); | ||||||
|  | extern int  drmHashDestroy(void *t); | ||||||
|  | extern int  drmHashLookup(void *t, unsigned long key, void **value); | ||||||
|  | extern int  drmHashInsert(void *t, unsigned long key, void *value); | ||||||
|  | extern int  drmHashDelete(void *t, unsigned long key); | ||||||
|  | extern int  drmHashFirst(void *t, unsigned long *key, void **value); | ||||||
|  | extern int  drmHashNext(void *t, unsigned long *key, void **value); | ||||||
|  | 
 | ||||||
|  | /* PRNG routines */ | ||||||
|  | extern void          *drmRandomCreate(unsigned long seed); | ||||||
|  | extern int           drmRandomDestroy(void *state); | ||||||
|  | extern unsigned long drmRandom(void *state); | ||||||
|  | extern double        drmRandomDouble(void *state); | ||||||
|  | 
 | ||||||
|  | /* Skip list routines */ | ||||||
|  | 
 | ||||||
|  | extern void *drmSLCreate(void); | ||||||
|  | extern int  drmSLDestroy(void *l); | ||||||
|  | extern int  drmSLLookup(void *l, unsigned long key, void **value); | ||||||
|  | extern int  drmSLInsert(void *l, unsigned long key, void *value); | ||||||
|  | extern int  drmSLDelete(void *l, unsigned long key); | ||||||
|  | extern int  drmSLNext(void *l, unsigned long *key, void **value); | ||||||
|  | extern int  drmSLFirst(void *l, unsigned long *key, void **value); | ||||||
|  | extern void drmSLDump(void *l); | ||||||
|  | extern int  drmSLLookupNeighbors(void *l, unsigned long key, | ||||||
|  | 				 unsigned long *prev_key, void **prev_value, | ||||||
|  | 				 unsigned long *next_key, void **next_value); | ||||||
|  | 
 | ||||||
|  | extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened); | ||||||
|  | extern int drmOpenOnceWithType(const char *BusID, int *newlyopened, int type); | ||||||
|  | extern void drmCloseOnce(int fd); | ||||||
|  | extern void drmMsg(const char *format, ...) DRM_PRINTFLIKE(1, 2); | ||||||
|  | 
 | ||||||
|  | extern int drmSetMaster(int fd); | ||||||
|  | extern int drmDropMaster(int fd); | ||||||
|  | extern int drmIsMaster(int fd); | ||||||
|  | 
 | ||||||
|  | #define DRM_EVENT_CONTEXT_VERSION 4 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmEventContext { | ||||||
|  | 
 | ||||||
|  | 	/* This struct is versioned so we can add more pointers if we
 | ||||||
|  | 	 * add more events. */ | ||||||
|  | 	int version; | ||||||
|  | 
 | ||||||
|  | 	void (*vblank_handler)(int fd, | ||||||
|  | 			       unsigned int sequence,  | ||||||
|  | 			       unsigned int tv_sec, | ||||||
|  | 			       unsigned int tv_usec, | ||||||
|  | 			       void *user_data); | ||||||
|  | 
 | ||||||
|  | 	void (*page_flip_handler)(int fd, | ||||||
|  | 				  unsigned int sequence, | ||||||
|  | 				  unsigned int tv_sec, | ||||||
|  | 				  unsigned int tv_usec, | ||||||
|  | 				  void *user_data); | ||||||
|  | 
 | ||||||
|  | 	void (*page_flip_handler2)(int fd, | ||||||
|  | 				   unsigned int sequence, | ||||||
|  | 				   unsigned int tv_sec, | ||||||
|  | 				   unsigned int tv_usec, | ||||||
|  | 				   unsigned int crtc_id, | ||||||
|  | 				   void *user_data); | ||||||
|  | 
 | ||||||
|  | 	void (*sequence_handler)(int fd, | ||||||
|  | 				 uint64_t sequence, | ||||||
|  | 				 uint64_t ns, | ||||||
|  | 				 uint64_t user_data); | ||||||
|  | } drmEventContext, *drmEventContextPtr; | ||||||
|  | 
 | ||||||
|  | extern int drmHandleEvent(int fd, drmEventContextPtr evctx); | ||||||
|  | 
 | ||||||
|  | extern char *drmGetDeviceNameFromFd(int fd); | ||||||
|  | 
 | ||||||
|  | /* Improved version of drmGetDeviceNameFromFd which attributes for any type of
 | ||||||
|  |  * device/node - card, control or renderD. | ||||||
|  |  */ | ||||||
|  | extern char *drmGetDeviceNameFromFd2(int fd); | ||||||
|  | extern int drmGetNodeTypeFromFd(int fd); | ||||||
|  | 
 | ||||||
|  | extern int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd); | ||||||
|  | extern int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle); | ||||||
|  | 
 | ||||||
|  | extern char *drmGetPrimaryDeviceNameFromFd(int fd); | ||||||
|  | extern char *drmGetRenderDeviceNameFromFd(int fd); | ||||||
|  | 
 | ||||||
|  | #define DRM_BUS_PCI       0 | ||||||
|  | #define DRM_BUS_USB       1 | ||||||
|  | #define DRM_BUS_PLATFORM  2 | ||||||
|  | #define DRM_BUS_HOST1X    3 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmPciBusInfo { | ||||||
|  |     uint16_t domain; | ||||||
|  |     uint8_t bus; | ||||||
|  |     uint8_t dev; | ||||||
|  |     uint8_t func; | ||||||
|  | } drmPciBusInfo, *drmPciBusInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmPciDeviceInfo { | ||||||
|  |     uint16_t vendor_id; | ||||||
|  |     uint16_t device_id; | ||||||
|  |     uint16_t subvendor_id; | ||||||
|  |     uint16_t subdevice_id; | ||||||
|  |     uint8_t revision_id; | ||||||
|  | } drmPciDeviceInfo, *drmPciDeviceInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmUsbBusInfo { | ||||||
|  |     uint8_t bus; | ||||||
|  |     uint8_t dev; | ||||||
|  | } drmUsbBusInfo, *drmUsbBusInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmUsbDeviceInfo { | ||||||
|  |     uint16_t vendor; | ||||||
|  |     uint16_t product; | ||||||
|  | } drmUsbDeviceInfo, *drmUsbDeviceInfoPtr; | ||||||
|  | 
 | ||||||
|  | #define DRM_PLATFORM_DEVICE_NAME_LEN 512 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmPlatformBusInfo { | ||||||
|  |     char fullname[DRM_PLATFORM_DEVICE_NAME_LEN]; | ||||||
|  | } drmPlatformBusInfo, *drmPlatformBusInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmPlatformDeviceInfo { | ||||||
|  |     char **compatible; /* NULL terminated list of compatible strings */ | ||||||
|  | } drmPlatformDeviceInfo, *drmPlatformDeviceInfoPtr; | ||||||
|  | 
 | ||||||
|  | #define DRM_HOST1X_DEVICE_NAME_LEN 512 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmHost1xBusInfo { | ||||||
|  |     char fullname[DRM_HOST1X_DEVICE_NAME_LEN]; | ||||||
|  | } drmHost1xBusInfo, *drmHost1xBusInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmHost1xDeviceInfo { | ||||||
|  |     char **compatible; /* NULL terminated list of compatible strings */ | ||||||
|  | } drmHost1xDeviceInfo, *drmHost1xDeviceInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmDevice { | ||||||
|  |     char **nodes; /* DRM_NODE_MAX sized array */ | ||||||
|  |     int available_nodes; /* DRM_NODE_* bitmask */ | ||||||
|  |     int bustype; | ||||||
|  |     union { | ||||||
|  |         drmPciBusInfoPtr pci; | ||||||
|  |         drmUsbBusInfoPtr usb; | ||||||
|  |         drmPlatformBusInfoPtr platform; | ||||||
|  |         drmHost1xBusInfoPtr host1x; | ||||||
|  |     } businfo; | ||||||
|  |     union { | ||||||
|  |         drmPciDeviceInfoPtr pci; | ||||||
|  |         drmUsbDeviceInfoPtr usb; | ||||||
|  |         drmPlatformDeviceInfoPtr platform; | ||||||
|  |         drmHost1xDeviceInfoPtr host1x; | ||||||
|  |     } deviceinfo; | ||||||
|  | } drmDevice, *drmDevicePtr; | ||||||
|  | 
 | ||||||
|  | extern int drmGetDevice(int fd, drmDevicePtr *device); | ||||||
|  | extern void drmFreeDevice(drmDevicePtr *device); | ||||||
|  | 
 | ||||||
|  | extern int drmGetDevices(drmDevicePtr devices[], int max_devices); | ||||||
|  | extern void drmFreeDevices(drmDevicePtr devices[], int count); | ||||||
|  | 
 | ||||||
|  | #define DRM_DEVICE_GET_PCI_REVISION (1 << 0) | ||||||
|  | extern int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device); | ||||||
|  | extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices); | ||||||
|  | 
 | ||||||
|  | extern int drmDevicesEqual(drmDevicePtr a, drmDevicePtr b); | ||||||
|  | 
 | ||||||
|  | extern int drmSyncobjCreate(int fd, uint32_t flags, uint32_t *handle); | ||||||
|  | extern int drmSyncobjDestroy(int fd, uint32_t handle); | ||||||
|  | extern int drmSyncobjHandleToFD(int fd, uint32_t handle, int *obj_fd); | ||||||
|  | extern int drmSyncobjFDToHandle(int fd, int obj_fd, uint32_t *handle); | ||||||
|  | 
 | ||||||
|  | extern int drmSyncobjImportSyncFile(int fd, uint32_t handle, int sync_file_fd); | ||||||
|  | extern int drmSyncobjExportSyncFile(int fd, uint32_t handle, int *sync_file_fd); | ||||||
|  | extern int drmSyncobjWait(int fd, uint32_t *handles, unsigned num_handles, | ||||||
|  | 			  int64_t timeout_nsec, unsigned flags, | ||||||
|  | 			  uint32_t *first_signaled); | ||||||
|  | extern int drmSyncobjReset(int fd, const uint32_t *handles, uint32_t handle_count); | ||||||
|  | extern int drmSyncobjSignal(int fd, const uint32_t *handles, uint32_t handle_count); | ||||||
|  | extern int drmSyncobjTimelineSignal(int fd, const uint32_t *handles, | ||||||
|  | 				    uint64_t *points, uint32_t handle_count); | ||||||
|  | extern int drmSyncobjTimelineWait(int fd, uint32_t *handles, uint64_t *points, | ||||||
|  | 				  unsigned num_handles, | ||||||
|  | 				  int64_t timeout_nsec, unsigned flags, | ||||||
|  | 				  uint32_t *first_signaled); | ||||||
|  | extern int drmSyncobjQuery(int fd, uint32_t *handles, uint64_t *points, | ||||||
|  | 			   uint32_t handle_count); | ||||||
|  | extern int drmSyncobjTransfer(int fd, | ||||||
|  | 			      uint32_t dst_handle, uint64_t dst_point, | ||||||
|  | 			      uint32_t src_handle, uint64_t src_point, | ||||||
|  | 			      uint32_t flags); | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										551
									
								
								libs/common/drm/include/xf86drmMode.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										551
									
								
								libs/common/drm/include/xf86drmMode.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,551 @@ | |||||||
|  | /*
 | ||||||
|  |  * \file xf86drmMode.h | ||||||
|  |  * Header for DRM modesetting interface. | ||||||
|  |  * | ||||||
|  |  * \author Jakob Bornecrantz <wallbraker@gmail.com> | ||||||
|  |  * | ||||||
|  |  * \par Acknowledgements: | ||||||
|  |  * Feb 2007, Dave Airlie <airlied@linux.ie> | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas. | ||||||
|  |  * Copyright (c) 2007-2008 Dave Airlie <airlied@linux.ie> | ||||||
|  |  * Copyright (c) 2007-2008 Jakob Bornecrantz <wallbraker@gmail.com> | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  |  * to deal in the Software without restriction, including without limitation | ||||||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | ||||||
|  |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||||
|  |  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||||
|  |  * IN THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _XF86DRMMODE_H_ | ||||||
|  | #define _XF86DRMMODE_H_ | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #include <drm.h> | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * This is the interface for modesetting for drm. | ||||||
|  |  * | ||||||
|  |  * In order to use this interface you must include either <stdint.h> or another | ||||||
|  |  * header defining uint32_t, int32_t and uint16_t. | ||||||
|  |  * | ||||||
|  |  * It aims to provide a randr1.2 compatible interface for modesettings in the | ||||||
|  |  * kernel, the interface is also meant to be used by libraries like EGL. | ||||||
|  |  * | ||||||
|  |  * More information can be found in randrproto.txt which can be found here: | ||||||
|  |  * http://gitweb.freedesktop.org/?p=xorg/proto/randrproto.git
 | ||||||
|  |  * | ||||||
|  |  * There are some major differences to be noted. Unlike the randr1.2 proto you | ||||||
|  |  * need to create the memory object of the framebuffer yourself with the ttm | ||||||
|  |  * buffer object interface. This object needs to be pinned. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * If we pickup an old version of drm.h which doesn't include drm_mode.h | ||||||
|  |  * we should redefine defines. This is so that builds doesn't breaks with | ||||||
|  |  * new libdrm on old kernels. | ||||||
|  |  */ | ||||||
|  | #ifndef _DRM_MODE_H | ||||||
|  | 
 | ||||||
|  | #define DRM_DISPLAY_INFO_LEN    32 | ||||||
|  | #define DRM_CONNECTOR_NAME_LEN  32 | ||||||
|  | #define DRM_DISPLAY_MODE_LEN    32 | ||||||
|  | #define DRM_PROP_NAME_LEN       32 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_TYPE_BUILTIN   (1<<0) | ||||||
|  | #define DRM_MODE_TYPE_CLOCK_C   ((1<<1) | DRM_MODE_TYPE_BUILTIN) | ||||||
|  | #define DRM_MODE_TYPE_CRTC_C    ((1<<2) | DRM_MODE_TYPE_BUILTIN) | ||||||
|  | #define DRM_MODE_TYPE_PREFERRED (1<<3) | ||||||
|  | #define DRM_MODE_TYPE_DEFAULT   (1<<4) | ||||||
|  | #define DRM_MODE_TYPE_USERDEF   (1<<5) | ||||||
|  | #define DRM_MODE_TYPE_DRIVER    (1<<6) | ||||||
|  | 
 | ||||||
|  | /* Video mode flags */ | ||||||
|  | /* bit compatible with the xorg definitions. */ | ||||||
|  | #define DRM_MODE_FLAG_PHSYNC			(1<<0) | ||||||
|  | #define DRM_MODE_FLAG_NHSYNC			(1<<1) | ||||||
|  | #define DRM_MODE_FLAG_PVSYNC			(1<<2) | ||||||
|  | #define DRM_MODE_FLAG_NVSYNC			(1<<3) | ||||||
|  | #define DRM_MODE_FLAG_INTERLACE			(1<<4) | ||||||
|  | #define DRM_MODE_FLAG_DBLSCAN			(1<<5) | ||||||
|  | #define DRM_MODE_FLAG_CSYNC			(1<<6) | ||||||
|  | #define DRM_MODE_FLAG_PCSYNC			(1<<7) | ||||||
|  | #define DRM_MODE_FLAG_NCSYNC			(1<<8) | ||||||
|  | #define DRM_MODE_FLAG_HSKEW			(1<<9) /* hskew provided */ | ||||||
|  | #define DRM_MODE_FLAG_BCAST			(1<<10) | ||||||
|  | #define DRM_MODE_FLAG_PIXMUX			(1<<11) | ||||||
|  | #define DRM_MODE_FLAG_DBLCLK			(1<<12) | ||||||
|  | #define DRM_MODE_FLAG_CLKDIV2			(1<<13) | ||||||
|  | #define DRM_MODE_FLAG_3D_MASK			(0x1f<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_NONE			(0<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_FRAME_PACKING		(1<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE	(2<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_LINE_ALTERNATIVE	(3<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL	(4<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_L_DEPTH		(5<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH	(6<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_TOP_AND_BOTTOM	(7<<14) | ||||||
|  | #define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF	(8<<14) | ||||||
|  | 
 | ||||||
|  | /* DPMS flags */ | ||||||
|  | /* bit compatible with the xorg definitions. */ | ||||||
|  | #define DRM_MODE_DPMS_ON        0 | ||||||
|  | #define DRM_MODE_DPMS_STANDBY   1 | ||||||
|  | #define DRM_MODE_DPMS_SUSPEND   2 | ||||||
|  | #define DRM_MODE_DPMS_OFF       3 | ||||||
|  | 
 | ||||||
|  | /* Scaling mode options */ | ||||||
|  | #define DRM_MODE_SCALE_NON_GPU          0 | ||||||
|  | #define DRM_MODE_SCALE_FULLSCREEN       1 | ||||||
|  | #define DRM_MODE_SCALE_NO_SCALE         2 | ||||||
|  | #define DRM_MODE_SCALE_ASPECT           3 | ||||||
|  | 
 | ||||||
|  | /* Dithering mode options */ | ||||||
|  | #define DRM_MODE_DITHERING_OFF  0 | ||||||
|  | #define DRM_MODE_DITHERING_ON   1 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_ENCODER_NONE    0 | ||||||
|  | #define DRM_MODE_ENCODER_DAC     1 | ||||||
|  | #define DRM_MODE_ENCODER_TMDS    2 | ||||||
|  | #define DRM_MODE_ENCODER_LVDS    3 | ||||||
|  | #define DRM_MODE_ENCODER_TVDAC   4 | ||||||
|  | #define DRM_MODE_ENCODER_VIRTUAL 5 | ||||||
|  | #define DRM_MODE_ENCODER_DSI     6 | ||||||
|  | #define DRM_MODE_ENCODER_DPMST   7 | ||||||
|  | #define DRM_MODE_ENCODER_DPI     8 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_Automatic 0 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_Unknown   0 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_DVID      3 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_DVIA      4 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_Composite 5 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_SVIDEO    6 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_Component 8 | ||||||
|  | #define DRM_MODE_SUBCONNECTOR_SCART     9 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_CONNECTOR_Unknown      0 | ||||||
|  | #define DRM_MODE_CONNECTOR_VGA          1 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVII         2 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVID         3 | ||||||
|  | #define DRM_MODE_CONNECTOR_DVIA         4 | ||||||
|  | #define DRM_MODE_CONNECTOR_Composite    5 | ||||||
|  | #define DRM_MODE_CONNECTOR_SVIDEO       6 | ||||||
|  | #define DRM_MODE_CONNECTOR_LVDS         7 | ||||||
|  | #define DRM_MODE_CONNECTOR_Component    8 | ||||||
|  | #define DRM_MODE_CONNECTOR_9PinDIN      9 | ||||||
|  | #define DRM_MODE_CONNECTOR_DisplayPort  10 | ||||||
|  | #define DRM_MODE_CONNECTOR_HDMIA        11 | ||||||
|  | #define DRM_MODE_CONNECTOR_HDMIB        12 | ||||||
|  | #define DRM_MODE_CONNECTOR_TV           13 | ||||||
|  | #define DRM_MODE_CONNECTOR_eDP          14 | ||||||
|  | #define DRM_MODE_CONNECTOR_VIRTUAL      15 | ||||||
|  | #define DRM_MODE_CONNECTOR_DSI          16 | ||||||
|  | #define DRM_MODE_CONNECTOR_DPI          17 | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_PROP_PENDING   (1<<0) | ||||||
|  | #define DRM_MODE_PROP_RANGE     (1<<1) | ||||||
|  | #define DRM_MODE_PROP_IMMUTABLE (1<<2) | ||||||
|  | #define DRM_MODE_PROP_ENUM      (1<<3) /* enumerated type with text strings */ | ||||||
|  | #define DRM_MODE_PROP_BLOB      (1<<4) | ||||||
|  | 
 | ||||||
|  | #define DRM_MODE_CURSOR_BO      (1<<0) | ||||||
|  | #define DRM_MODE_CURSOR_MOVE    (1<<1) | ||||||
|  | 
 | ||||||
|  | #endif /* _DRM_MODE_H */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Feature defines | ||||||
|  |  * | ||||||
|  |  * Just because these are defined doesn't mean that the kernel | ||||||
|  |  * can do that feature, its just for new code vs old libdrm. | ||||||
|  |  */ | ||||||
|  | #define DRM_MODE_FEATURE_KMS		1 | ||||||
|  | #define DRM_MODE_FEATURE_DIRTYFB	1 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeRes { | ||||||
|  | 
 | ||||||
|  | 	int count_fbs; | ||||||
|  | 	uint32_t *fbs; | ||||||
|  | 
 | ||||||
|  | 	int count_crtcs; | ||||||
|  | 	uint32_t *crtcs; | ||||||
|  | 
 | ||||||
|  | 	int count_connectors; | ||||||
|  | 	uint32_t *connectors; | ||||||
|  | 
 | ||||||
|  | 	int count_encoders; | ||||||
|  | 	uint32_t *encoders; | ||||||
|  | 
 | ||||||
|  | 	uint32_t min_width, max_width; | ||||||
|  | 	uint32_t min_height, max_height; | ||||||
|  | } drmModeRes, *drmModeResPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeModeInfo { | ||||||
|  | 	uint32_t clock; | ||||||
|  | 	uint16_t hdisplay, hsync_start, hsync_end, htotal, hskew; | ||||||
|  | 	uint16_t vdisplay, vsync_start, vsync_end, vtotal, vscan; | ||||||
|  | 
 | ||||||
|  | 	uint32_t vrefresh; | ||||||
|  | 
 | ||||||
|  | 	uint32_t flags; | ||||||
|  | 	uint32_t type; | ||||||
|  | 	char name[DRM_DISPLAY_MODE_LEN]; | ||||||
|  | } drmModeModeInfo, *drmModeModeInfoPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeFB { | ||||||
|  | 	uint32_t fb_id; | ||||||
|  | 	uint32_t width, height; | ||||||
|  | 	uint32_t pitch; | ||||||
|  | 	uint32_t bpp; | ||||||
|  | 	uint32_t depth; | ||||||
|  | 	/* driver specific handle */ | ||||||
|  | 	uint32_t handle; | ||||||
|  | } drmModeFB, *drmModeFBPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct drm_clip_rect drmModeClip, *drmModeClipPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModePropertyBlob { | ||||||
|  | 	uint32_t id; | ||||||
|  | 	uint32_t length; | ||||||
|  | 	void *data; | ||||||
|  | } drmModePropertyBlobRes, *drmModePropertyBlobPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeProperty { | ||||||
|  | 	uint32_t prop_id; | ||||||
|  | 	uint32_t flags; | ||||||
|  | 	char name[DRM_PROP_NAME_LEN]; | ||||||
|  | 	int count_values; | ||||||
|  | 	uint64_t *values; /* store the blob lengths */ | ||||||
|  | 	int count_enums; | ||||||
|  | 	struct drm_mode_property_enum *enums; | ||||||
|  | 	int count_blobs; | ||||||
|  | 	uint32_t *blob_ids; /* store the blob IDs */ | ||||||
|  | } drmModePropertyRes, *drmModePropertyPtr; | ||||||
|  | 
 | ||||||
|  | static __inline int drm_property_type_is(drmModePropertyPtr property, | ||||||
|  | 		uint32_t type) | ||||||
|  | { | ||||||
|  | 	/* instanceof for props.. handles extended type vs original types: */ | ||||||
|  | 	if (property->flags & DRM_MODE_PROP_EXTENDED_TYPE) | ||||||
|  | 		return (property->flags & DRM_MODE_PROP_EXTENDED_TYPE) == type; | ||||||
|  | 	return property->flags & type; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeCrtc { | ||||||
|  | 	uint32_t crtc_id; | ||||||
|  | 	uint32_t buffer_id; /**< FB id to connect to 0 = disconnect */ | ||||||
|  | 
 | ||||||
|  | 	uint32_t x, y; /**< Position on the framebuffer */ | ||||||
|  | 	uint32_t width, height; | ||||||
|  | 	int mode_valid; | ||||||
|  | 	drmModeModeInfo mode; | ||||||
|  | 
 | ||||||
|  | 	int gamma_size; /**< Number of gamma stops */ | ||||||
|  | 
 | ||||||
|  | } drmModeCrtc, *drmModeCrtcPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeEncoder { | ||||||
|  | 	uint32_t encoder_id; | ||||||
|  | 	uint32_t encoder_type; | ||||||
|  | 	uint32_t crtc_id; | ||||||
|  | 	uint32_t possible_crtcs; | ||||||
|  | 	uint32_t possible_clones; | ||||||
|  | } drmModeEncoder, *drmModeEncoderPtr; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  | 	DRM_MODE_CONNECTED         = 1, | ||||||
|  | 	DRM_MODE_DISCONNECTED      = 2, | ||||||
|  | 	DRM_MODE_UNKNOWNCONNECTION = 3 | ||||||
|  | } drmModeConnection; | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  | 	DRM_MODE_SUBPIXEL_UNKNOWN        = 1, | ||||||
|  | 	DRM_MODE_SUBPIXEL_HORIZONTAL_RGB = 2, | ||||||
|  | 	DRM_MODE_SUBPIXEL_HORIZONTAL_BGR = 3, | ||||||
|  | 	DRM_MODE_SUBPIXEL_VERTICAL_RGB   = 4, | ||||||
|  | 	DRM_MODE_SUBPIXEL_VERTICAL_BGR   = 5, | ||||||
|  | 	DRM_MODE_SUBPIXEL_NONE           = 6 | ||||||
|  | } drmModeSubPixel; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeConnector { | ||||||
|  | 	uint32_t connector_id; | ||||||
|  | 	uint32_t encoder_id; /**< Encoder currently connected to */ | ||||||
|  | 	uint32_t connector_type; | ||||||
|  | 	uint32_t connector_type_id; | ||||||
|  | 	drmModeConnection connection; | ||||||
|  | 	uint32_t mmWidth, mmHeight; /**< HxW in millimeters */ | ||||||
|  | 	drmModeSubPixel subpixel; | ||||||
|  | 
 | ||||||
|  | 	int count_modes; | ||||||
|  | 	drmModeModeInfoPtr modes; | ||||||
|  | 
 | ||||||
|  | 	int count_props; | ||||||
|  | 	uint32_t *props; /**< List of property ids */ | ||||||
|  | 	uint64_t *prop_values; /**< List of property values */ | ||||||
|  | 
 | ||||||
|  | 	int count_encoders; | ||||||
|  | 	uint32_t *encoders; /**< List of encoder ids */ | ||||||
|  | } drmModeConnector, *drmModeConnectorPtr; | ||||||
|  | 
 | ||||||
|  | #define DRM_PLANE_TYPE_OVERLAY 0 | ||||||
|  | #define DRM_PLANE_TYPE_PRIMARY 1 | ||||||
|  | #define DRM_PLANE_TYPE_CURSOR  2 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeObjectProperties { | ||||||
|  | 	uint32_t count_props; | ||||||
|  | 	uint32_t *props; | ||||||
|  | 	uint64_t *prop_values; | ||||||
|  | } drmModeObjectProperties, *drmModeObjectPropertiesPtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModePlane { | ||||||
|  | 	uint32_t count_formats; | ||||||
|  | 	uint32_t *formats; | ||||||
|  | 	uint32_t plane_id; | ||||||
|  | 
 | ||||||
|  | 	uint32_t crtc_id; | ||||||
|  | 	uint32_t fb_id; | ||||||
|  | 
 | ||||||
|  | 	uint32_t crtc_x, crtc_y; | ||||||
|  | 	uint32_t x, y; | ||||||
|  | 
 | ||||||
|  | 	uint32_t possible_crtcs; | ||||||
|  | 	uint32_t gamma_size; | ||||||
|  | } drmModePlane, *drmModePlanePtr; | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModePlaneRes { | ||||||
|  | 	uint32_t count_planes; | ||||||
|  | 	uint32_t *planes; | ||||||
|  | } drmModePlaneRes, *drmModePlaneResPtr; | ||||||
|  | 
 | ||||||
|  | extern void drmModeFreeModeInfo( drmModeModeInfoPtr ptr ); | ||||||
|  | extern void drmModeFreeResources( drmModeResPtr ptr ); | ||||||
|  | extern void drmModeFreeFB( drmModeFBPtr ptr ); | ||||||
|  | extern void drmModeFreeCrtc( drmModeCrtcPtr ptr ); | ||||||
|  | extern void drmModeFreeConnector( drmModeConnectorPtr ptr ); | ||||||
|  | extern void drmModeFreeEncoder( drmModeEncoderPtr ptr ); | ||||||
|  | extern void drmModeFreePlane( drmModePlanePtr ptr ); | ||||||
|  | extern void drmModeFreePlaneResources(drmModePlaneResPtr ptr); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Retrieves all of the resources associated with a card. | ||||||
|  |  */ | ||||||
|  | extern drmModeResPtr drmModeGetResources(int fd); | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * FrameBuffer manipulation. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Retrieve information about framebuffer bufferId | ||||||
|  |  */ | ||||||
|  | extern drmModeFBPtr drmModeGetFB(int fd, uint32_t bufferId); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Creates a new framebuffer with an buffer object as its scanout buffer. | ||||||
|  |  */ | ||||||
|  | extern int drmModeAddFB(int fd, uint32_t width, uint32_t height, uint8_t depth, | ||||||
|  | 			uint8_t bpp, uint32_t pitch, uint32_t bo_handle, | ||||||
|  | 			uint32_t *buf_id); | ||||||
|  | /* ...with a specific pixel format */ | ||||||
|  | extern int drmModeAddFB2(int fd, uint32_t width, uint32_t height, | ||||||
|  | 			 uint32_t pixel_format, const uint32_t bo_handles[4], | ||||||
|  | 			 const uint32_t pitches[4], const uint32_t offsets[4], | ||||||
|  | 			 uint32_t *buf_id, uint32_t flags); | ||||||
|  | 
 | ||||||
|  | /* ...with format modifiers */ | ||||||
|  | int drmModeAddFB2WithModifiers(int fd, uint32_t width, uint32_t height, | ||||||
|  | 			       uint32_t pixel_format, const uint32_t bo_handles[4], | ||||||
|  | 			       const uint32_t pitches[4], const uint32_t offsets[4], | ||||||
|  | 			       const uint64_t modifier[4], uint32_t *buf_id, | ||||||
|  | 				   uint32_t flags); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Destroies the given framebuffer. | ||||||
|  |  */ | ||||||
|  | extern int drmModeRmFB(int fd, uint32_t bufferId); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Mark a region of a framebuffer as dirty. | ||||||
|  |  */ | ||||||
|  | extern int drmModeDirtyFB(int fd, uint32_t bufferId, | ||||||
|  | 			  drmModeClipPtr clips, uint32_t num_clips); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Crtc functions | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Retrieve information about the ctrt crtcId | ||||||
|  |  */ | ||||||
|  | extern drmModeCrtcPtr drmModeGetCrtc(int fd, uint32_t crtcId); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Set the mode on a crtc crtcId with the given mode modeId. | ||||||
|  |  */ | ||||||
|  | int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId, | ||||||
|  |                    uint32_t x, uint32_t y, uint32_t *connectors, int count, | ||||||
|  | 		   drmModeModeInfoPtr mode); | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Cursor functions | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Set the cursor on crtc | ||||||
|  |  */ | ||||||
|  | int drmModeSetCursor(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height); | ||||||
|  | 
 | ||||||
|  | int drmModeSetCursor2(int fd, uint32_t crtcId, uint32_t bo_handle, uint32_t width, uint32_t height, int32_t hot_x, int32_t hot_y); | ||||||
|  | /**
 | ||||||
|  |  * Move the cursor on crtc | ||||||
|  |  */ | ||||||
|  | int drmModeMoveCursor(int fd, uint32_t crtcId, int x, int y); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Encoder functions | ||||||
|  |  */ | ||||||
|  | drmModeEncoderPtr drmModeGetEncoder(int fd, uint32_t encoder_id); | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Connector manipulation | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Retrieve all information about the connector connectorId. This will do a | ||||||
|  |  * forced probe on the connector to retrieve remote information such as EDIDs | ||||||
|  |  * from the display device. | ||||||
|  |  */ | ||||||
|  | extern drmModeConnectorPtr drmModeGetConnector(int fd, | ||||||
|  | 					       uint32_t connectorId); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Retrieve current information, i.e the currently active mode and encoder, | ||||||
|  |  * about the connector connectorId. This will not do any probing on the | ||||||
|  |  * connector or remote device, and only reports what is currently known. | ||||||
|  |  * For the complete set of modes and encoders associated with the connector | ||||||
|  |  * use drmModeGetConnector() which will do a probe to determine any display | ||||||
|  |  * link changes first. | ||||||
|  |  */ | ||||||
|  | extern drmModeConnectorPtr drmModeGetConnectorCurrent(int fd, | ||||||
|  | 						      uint32_t connector_id); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Attaches the given mode to an connector. | ||||||
|  |  */ | ||||||
|  | extern int drmModeAttachMode(int fd, uint32_t connectorId, drmModeModeInfoPtr mode_info); | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Detaches a mode from the connector | ||||||
|  |  * must be unused, by the given mode. | ||||||
|  |  */ | ||||||
|  | extern int drmModeDetachMode(int fd, uint32_t connectorId, drmModeModeInfoPtr mode_info); | ||||||
|  | 
 | ||||||
|  | extern drmModePropertyPtr drmModeGetProperty(int fd, uint32_t propertyId); | ||||||
|  | extern void drmModeFreeProperty(drmModePropertyPtr ptr); | ||||||
|  | 
 | ||||||
|  | extern drmModePropertyBlobPtr drmModeGetPropertyBlob(int fd, uint32_t blob_id); | ||||||
|  | extern void drmModeFreePropertyBlob(drmModePropertyBlobPtr ptr); | ||||||
|  | extern int drmModeConnectorSetProperty(int fd, uint32_t connector_id, uint32_t property_id, | ||||||
|  | 				    uint64_t value); | ||||||
|  | extern int drmCheckModesettingSupported(const char *busid); | ||||||
|  | 
 | ||||||
|  | extern int drmModeCrtcSetGamma(int fd, uint32_t crtc_id, uint32_t size, | ||||||
|  | 			       uint16_t *red, uint16_t *green, uint16_t *blue); | ||||||
|  | extern int drmModeCrtcGetGamma(int fd, uint32_t crtc_id, uint32_t size, | ||||||
|  | 			       uint16_t *red, uint16_t *green, uint16_t *blue); | ||||||
|  | extern int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id, | ||||||
|  | 			   uint32_t flags, void *user_data); | ||||||
|  | extern int drmModePageFlipTarget(int fd, uint32_t crtc_id, uint32_t fb_id, | ||||||
|  | 				 uint32_t flags, void *user_data, | ||||||
|  | 				 uint32_t target_vblank); | ||||||
|  | 
 | ||||||
|  | extern drmModePlaneResPtr drmModeGetPlaneResources(int fd); | ||||||
|  | extern drmModePlanePtr drmModeGetPlane(int fd, uint32_t plane_id); | ||||||
|  | extern int drmModeSetPlane(int fd, uint32_t plane_id, uint32_t crtc_id, | ||||||
|  | 			   uint32_t fb_id, uint32_t flags, | ||||||
|  | 			   int32_t crtc_x, int32_t crtc_y, | ||||||
|  | 			   uint32_t crtc_w, uint32_t crtc_h, | ||||||
|  | 			   uint32_t src_x, uint32_t src_y, | ||||||
|  | 			   uint32_t src_w, uint32_t src_h); | ||||||
|  | 
 | ||||||
|  | extern drmModeObjectPropertiesPtr drmModeObjectGetProperties(int fd, | ||||||
|  | 							uint32_t object_id, | ||||||
|  | 							uint32_t object_type); | ||||||
|  | extern void drmModeFreeObjectProperties(drmModeObjectPropertiesPtr ptr); | ||||||
|  | extern int drmModeObjectSetProperty(int fd, uint32_t object_id, | ||||||
|  | 				    uint32_t object_type, uint32_t property_id, | ||||||
|  | 				    uint64_t value); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | typedef struct _drmModeAtomicReq drmModeAtomicReq, *drmModeAtomicReqPtr; | ||||||
|  | 
 | ||||||
|  | extern drmModeAtomicReqPtr drmModeAtomicAlloc(void); | ||||||
|  | extern drmModeAtomicReqPtr drmModeAtomicDuplicate(drmModeAtomicReqPtr req); | ||||||
|  | extern int drmModeAtomicMerge(drmModeAtomicReqPtr base, | ||||||
|  | 			      drmModeAtomicReqPtr augment); | ||||||
|  | extern void drmModeAtomicFree(drmModeAtomicReqPtr req); | ||||||
|  | extern int drmModeAtomicGetCursor(drmModeAtomicReqPtr req); | ||||||
|  | extern void drmModeAtomicSetCursor(drmModeAtomicReqPtr req, int cursor); | ||||||
|  | extern int drmModeAtomicAddProperty(drmModeAtomicReqPtr req, | ||||||
|  | 				    uint32_t object_id, | ||||||
|  | 				    uint32_t property_id, | ||||||
|  | 				    uint64_t value); | ||||||
|  | extern int drmModeAtomicCommit(int fd, | ||||||
|  | 			       drmModeAtomicReqPtr req, | ||||||
|  | 			       uint32_t flags, | ||||||
|  | 			       void *user_data); | ||||||
|  | 
 | ||||||
|  | extern int drmModeCreatePropertyBlob(int fd, const void *data, size_t size, | ||||||
|  | 				     uint32_t *id); | ||||||
|  | extern int drmModeDestroyPropertyBlob(int fd, uint32_t id); | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * DRM mode lease APIs. These create and manage new drm_masters with | ||||||
|  |  * access to a subset of the available DRM resources | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | extern int drmModeCreateLease(int fd, const uint32_t *objects, int num_objects, int flags, uint32_t *lessee_id); | ||||||
|  | 
 | ||||||
|  | typedef struct drmModeLesseeList { | ||||||
|  | 	uint32_t count; | ||||||
|  | 	uint32_t lessees[0]; | ||||||
|  | } drmModeLesseeListRes, *drmModeLesseeListPtr; | ||||||
|  | 
 | ||||||
|  | extern drmModeLesseeListPtr drmModeListLessees(int fd); | ||||||
|  | 
 | ||||||
|  | typedef struct drmModeObjectList { | ||||||
|  | 	uint32_t count; | ||||||
|  | 	uint32_t objects[0]; | ||||||
|  | } drmModeObjectListRes, *drmModeObjectListPtr; | ||||||
|  | 
 | ||||||
|  | extern drmModeObjectListPtr drmModeGetLease(int fd); | ||||||
|  | 
 | ||||||
|  | extern int drmModeRevokeLease(int fd, uint32_t lessee_id); | ||||||
|  | 
 | ||||||
|  | #if defined(__cplusplus) | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										7559
									
								
								libs/common/stb/stb_image.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7559
									
								
								libs/common/stb/stb_image.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2630
									
								
								libs/common/stb/stb_image_resize.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2630
									
								
								libs/common/stb/stb_image_resize.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1619
									
								
								libs/common/stb/stb_image_write.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1619
									
								
								libs/common/stb/stb_image_write.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/cjpeg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/cjpeg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/djpeg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/djpeg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/jpegtran
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/jpegtran
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/rdjpgcom
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/rdjpgcom
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/wrjpgcom
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/bin/wrjpgcom
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										54
									
								
								libs/platform/RK1808/libjpeg/include/jconfig.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								libs/platform/RK1808/libjpeg/include/jconfig.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | /* jconfig.h.  Generated from jconfig.cfg by configure.  */ | ||||||
|  | /* jconfig.cfg --- source file edited by configure script */ | ||||||
|  | /* see jconfig.txt for explanations */ | ||||||
|  | 
 | ||||||
|  | #define HAVE_PROTOTYPES 1 | ||||||
|  | #define HAVE_UNSIGNED_CHAR 1 | ||||||
|  | #define HAVE_UNSIGNED_SHORT 1 | ||||||
|  | /* #undef void */ | ||||||
|  | /* #undef const */ | ||||||
|  | /* #undef CHAR_IS_UNSIGNED */ | ||||||
|  | #define HAVE_STDDEF_H 1 | ||||||
|  | #define HAVE_STDLIB_H 1 | ||||||
|  | #define HAVE_LOCALE_H 1 | ||||||
|  | /* #undef NEED_BSD_STRINGS */ | ||||||
|  | /* #undef NEED_SYS_TYPES_H */ | ||||||
|  | /* #undef NEED_FAR_POINTERS */ | ||||||
|  | /* #undef NEED_SHORT_EXTERNAL_NAMES */ | ||||||
|  | /* Define this if you get warnings about undefined structures. */ | ||||||
|  | /* #undef INCOMPLETE_TYPES_BROKEN */ | ||||||
|  | 
 | ||||||
|  | /* Define "boolean" as unsigned char, not int, on Windows systems. */ | ||||||
|  | #ifdef _WIN32 | ||||||
|  | #ifndef __RPCNDR_H__		/* don't conflict if rpcndr.h already read */ | ||||||
|  | typedef unsigned char boolean; | ||||||
|  | #endif | ||||||
|  | #define HAVE_BOOLEAN		/* prevent jmorecfg.h from redefining it */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNALS | ||||||
|  | 
 | ||||||
|  | /* #undef RIGHT_SHIFT_IS_UNSIGNED */ | ||||||
|  | #define INLINE __inline__ | ||||||
|  | /* These are for configuring the JPEG memory manager. */ | ||||||
|  | /* #undef DEFAULT_MAX_MEM */ | ||||||
|  | /* #undef NO_MKTEMP */ | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_INTERNALS */ | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_CJPEG_DJPEG | ||||||
|  | 
 | ||||||
|  | #define BMP_SUPPORTED		/* BMP image file format */ | ||||||
|  | #define GIF_SUPPORTED		/* GIF image file format */ | ||||||
|  | #define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */ | ||||||
|  | /* #undef RLE_SUPPORTED */ | ||||||
|  | #define TARGA_SUPPORTED		/* Targa image file format */ | ||||||
|  | 
 | ||||||
|  | /* #undef TWO_FILE_COMMANDLINE */ | ||||||
|  | /* #undef NEED_SIGNAL_CATCHER */ | ||||||
|  | /* #undef DONT_USE_B_MODE */ | ||||||
|  | 
 | ||||||
|  | /* Define this if you want percent-done progress reports from cjpeg/djpeg. */ | ||||||
|  | /* #undef PROGRESS_REPORT */ | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_CJPEG_DJPEG */ | ||||||
							
								
								
									
										304
									
								
								libs/platform/RK1808/libjpeg/include/jerror.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								libs/platform/RK1808/libjpeg/include/jerror.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,304 @@ | |||||||
|  | /*
 | ||||||
|  |  * jerror.h | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 1994-1997, Thomas G. Lane. | ||||||
|  |  * Modified 1997-2009 by Guido Vollbeding. | ||||||
|  |  * This file is part of the Independent JPEG Group's software. | ||||||
|  |  * For conditions of distribution and use, see the accompanying README file. | ||||||
|  |  * | ||||||
|  |  * This file defines the error and message codes for the JPEG library. | ||||||
|  |  * Edit this file to add new codes, or to translate the message strings to | ||||||
|  |  * some other language. | ||||||
|  |  * A set of error-reporting macros are defined too.  Some applications using | ||||||
|  |  * the JPEG library may wish to include this file to get the error codes | ||||||
|  |  * and/or the macros. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * To define the enum list of message codes, include this file without | ||||||
|  |  * defining macro JMESSAGE.  To create a message string table, include it | ||||||
|  |  * again with a suitable JMESSAGE definition (see jerror.c for an example). | ||||||
|  |  */ | ||||||
|  | #ifndef JMESSAGE | ||||||
|  | #ifndef JERROR_H | ||||||
|  | /* First time through, define the enum list */ | ||||||
|  | #define JMAKE_ENUM_LIST | ||||||
|  | #else | ||||||
|  | /* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */ | ||||||
|  | #define JMESSAGE(code,string) | ||||||
|  | #endif /* JERROR_H */ | ||||||
|  | #endif /* JMESSAGE */ | ||||||
|  | 
 | ||||||
|  | #ifdef JMAKE_ENUM_LIST | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  | 
 | ||||||
|  | #define JMESSAGE(code,string)	code , | ||||||
|  | 
 | ||||||
|  | #endif /* JMAKE_ENUM_LIST */ | ||||||
|  | 
 | ||||||
|  | JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */ | ||||||
|  | 
 | ||||||
|  | /* For maintenance convenience, list is alphabetical by message code name */ | ||||||
|  | JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix") | ||||||
|  | JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix") | ||||||
|  | JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode") | ||||||
|  | JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS") | ||||||
|  | JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") | ||||||
|  | JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range") | ||||||
|  | JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported") | ||||||
|  | JMESSAGE(JERR_BAD_DROP_SAMPLING, | ||||||
|  | 	 "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") | ||||||
|  | JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition") | ||||||
|  | JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace") | ||||||
|  | JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace") | ||||||
|  | JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length") | ||||||
|  | JMESSAGE(JERR_BAD_LIB_VERSION, | ||||||
|  | 	 "Wrong JPEG library version: library is %d, caller expects %d") | ||||||
|  | JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan") | ||||||
|  | JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d") | ||||||
|  | JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d") | ||||||
|  | JMESSAGE(JERR_BAD_PROGRESSION, | ||||||
|  | 	 "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d") | ||||||
|  | JMESSAGE(JERR_BAD_PROG_SCRIPT, | ||||||
|  | 	 "Invalid progressive parameters at scan script entry %d") | ||||||
|  | JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors") | ||||||
|  | JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d") | ||||||
|  | JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d") | ||||||
|  | JMESSAGE(JERR_BAD_STRUCT_SIZE, | ||||||
|  | 	 "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u") | ||||||
|  | JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access") | ||||||
|  | JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small") | ||||||
|  | JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here") | ||||||
|  | JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet") | ||||||
|  | JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d") | ||||||
|  | JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request") | ||||||
|  | JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d") | ||||||
|  | JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x") | ||||||
|  | JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d") | ||||||
|  | JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d") | ||||||
|  | JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)") | ||||||
|  | JMESSAGE(JERR_EMS_READ, "Read from EMS failed") | ||||||
|  | JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed") | ||||||
|  | JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan") | ||||||
|  | JMESSAGE(JERR_FILE_READ, "Input file read error") | ||||||
|  | JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?") | ||||||
|  | JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet") | ||||||
|  | JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow") | ||||||
|  | JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry") | ||||||
|  | JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels") | ||||||
|  | JMESSAGE(JERR_INPUT_EMPTY, "Empty input file") | ||||||
|  | JMESSAGE(JERR_INPUT_EOF, "Premature end of input file") | ||||||
|  | JMESSAGE(JERR_MISMATCHED_QUANT_TABLE, | ||||||
|  | 	 "Cannot transcode due to multiple use of quantization table %d") | ||||||
|  | JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data") | ||||||
|  | JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change") | ||||||
|  | JMESSAGE(JERR_NOTIMPL, "Not implemented yet") | ||||||
|  | JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time") | ||||||
|  | JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported") | ||||||
|  | JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image") | ||||||
|  | JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x") | ||||||
|  | JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)") | ||||||
|  | JMESSAGE(JERR_QUANT_COMPONENTS, | ||||||
|  | 	 "Cannot quantize more than %d color components") | ||||||
|  | JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors") | ||||||
|  | JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors") | ||||||
|  | JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers") | ||||||
|  | JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker") | ||||||
|  | JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x") | ||||||
|  | JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers") | ||||||
|  | JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF") | ||||||
|  | JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s") | ||||||
|  | JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file") | ||||||
|  | JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file") | ||||||
|  | JMESSAGE(JERR_TFILE_WRITE, | ||||||
|  | 	 "Write failed on temporary file --- out of disk space?") | ||||||
|  | JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines") | ||||||
|  | JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x") | ||||||
|  | JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up") | ||||||
|  | JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation") | ||||||
|  | JMESSAGE(JERR_XMS_READ, "Read from XMS failed") | ||||||
|  | JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed") | ||||||
|  | JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT) | ||||||
|  | JMESSAGE(JMSG_VERSION, JVERSION) | ||||||
|  | JMESSAGE(JTRC_16BIT_TABLES, | ||||||
|  | 	 "Caution: quantization tables are too coarse for baseline JPEG") | ||||||
|  | JMESSAGE(JTRC_ADOBE, | ||||||
|  | 	 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d") | ||||||
|  | JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u") | ||||||
|  | JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u") | ||||||
|  | JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x") | ||||||
|  | JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x") | ||||||
|  | JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d") | ||||||
|  | JMESSAGE(JTRC_DRI, "Define Restart Interval %u") | ||||||
|  | JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u") | ||||||
|  | JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u") | ||||||
|  | JMESSAGE(JTRC_EOI, "End Of Image") | ||||||
|  | JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d") | ||||||
|  | JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d") | ||||||
|  | JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE, | ||||||
|  | 	 "Warning: thumbnail image size does not match data length %u") | ||||||
|  | JMESSAGE(JTRC_JFIF_EXTENSION, | ||||||
|  | 	 "JFIF extension marker: type 0x%02x, length %u") | ||||||
|  | JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image") | ||||||
|  | JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u") | ||||||
|  | JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x") | ||||||
|  | JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u") | ||||||
|  | JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors") | ||||||
|  | JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors") | ||||||
|  | JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization") | ||||||
|  | JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d") | ||||||
|  | JMESSAGE(JTRC_RST, "RST%d") | ||||||
|  | JMESSAGE(JTRC_SMOOTH_NOTIMPL, | ||||||
|  | 	 "Smoothing not supported with nonstandard sampling ratios") | ||||||
|  | JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d") | ||||||
|  | JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d") | ||||||
|  | JMESSAGE(JTRC_SOI, "Start of Image") | ||||||
|  | JMESSAGE(JTRC_SOS, "Start Of Scan: %d components") | ||||||
|  | JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d") | ||||||
|  | JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d") | ||||||
|  | JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s") | ||||||
|  | JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s") | ||||||
|  | JMESSAGE(JTRC_THUMB_JPEG, | ||||||
|  | 	 "JFIF extension marker: JPEG-compressed thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_THUMB_PALETTE, | ||||||
|  | 	 "JFIF extension marker: palette thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_THUMB_RGB, | ||||||
|  | 	 "JFIF extension marker: RGB thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_UNKNOWN_IDS, | ||||||
|  | 	 "Unrecognized component IDs %d %d %d, assuming YCbCr") | ||||||
|  | JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u") | ||||||
|  | JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u") | ||||||
|  | JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d") | ||||||
|  | JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code") | ||||||
|  | JMESSAGE(JWRN_BOGUS_PROGRESSION, | ||||||
|  | 	 "Inconsistent progression sequence for component %d coefficient %d") | ||||||
|  | JMESSAGE(JWRN_EXTRANEOUS_DATA, | ||||||
|  | 	 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x") | ||||||
|  | JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment") | ||||||
|  | JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code") | ||||||
|  | JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d") | ||||||
|  | JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file") | ||||||
|  | JMESSAGE(JWRN_MUST_RESYNC, | ||||||
|  | 	 "Corrupt JPEG data: found marker 0x%02x instead of RST%d") | ||||||
|  | JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG") | ||||||
|  | JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines") | ||||||
|  | 
 | ||||||
|  | #ifdef JMAKE_ENUM_LIST | ||||||
|  | 
 | ||||||
|  |   JMSG_LASTMSGCODE | ||||||
|  | } J_MESSAGE_CODE; | ||||||
|  | 
 | ||||||
|  | #undef JMAKE_ENUM_LIST | ||||||
|  | #endif /* JMAKE_ENUM_LIST */ | ||||||
|  | 
 | ||||||
|  | /* Zap JMESSAGE macro so that future re-inclusions do nothing by default */ | ||||||
|  | #undef JMESSAGE | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #ifndef JERROR_H | ||||||
|  | #define JERROR_H | ||||||
|  | 
 | ||||||
|  | /* Macros to simplify using the error and trace message stuff */ | ||||||
|  | /* The first parameter is either type of cinfo pointer */ | ||||||
|  | 
 | ||||||
|  | /* Fatal errors (print message and exit) */ | ||||||
|  | #define ERREXIT(cinfo,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT1(cinfo,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT2(cinfo,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT3(cinfo,code,p1,p2,p3)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[3] = (p4), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[3] = (p4), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[4] = (p5), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[5] = (p6), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXITS(cinfo,code,str)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | 
 | ||||||
|  | #define MAKESTMT(stuff)		do { stuff } while (0) | ||||||
|  | 
 | ||||||
|  | /* Nonfatal errors (we can keep going, but the data is probably corrupt) */ | ||||||
|  | #define WARNMS(cinfo,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | #define WARNMS1(cinfo,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | #define WARNMS2(cinfo,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | 
 | ||||||
|  | /* Informational/debugging messages */ | ||||||
|  | #define TRACEMS(cinfo,lvl,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS1(cinfo,lvl,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS2(cinfo,lvl,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   _mp[4] = (p5); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMSS(cinfo,lvl,code,str)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | 
 | ||||||
|  | #endif /* JERROR_H */ | ||||||
							
								
								
									
										369
									
								
								libs/platform/RK1808/libjpeg/include/jmorecfg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										369
									
								
								libs/platform/RK1808/libjpeg/include/jmorecfg.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,369 @@ | |||||||
|  | /*
 | ||||||
|  |  * jmorecfg.h | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 1991-1997, Thomas G. Lane. | ||||||
|  |  * Modified 1997-2011 by Guido Vollbeding. | ||||||
|  |  * This file is part of the Independent JPEG Group's software. | ||||||
|  |  * For conditions of distribution and use, see the accompanying README file. | ||||||
|  |  * | ||||||
|  |  * This file contains additional configuration options that customize the | ||||||
|  |  * JPEG software for special applications or support machine-dependent | ||||||
|  |  * optimizations.  Most users will not need to touch this file. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Define BITS_IN_JSAMPLE as either | ||||||
|  |  *   8   for 8-bit sample values (the usual setting) | ||||||
|  |  *   12  for 12-bit sample values | ||||||
|  |  * Only 8 and 12 are legal data precisions for lossy JPEG according to the | ||||||
|  |  * JPEG standard, and the IJG code does not support anything else! | ||||||
|  |  * We do not support run-time selection of data precision, sorry. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define BITS_IN_JSAMPLE  8	/* use 8 or 12 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Maximum number of components (color channels) allowed in JPEG image. | ||||||
|  |  * To meet the letter of the JPEG spec, set this to 255.  However, darn | ||||||
|  |  * few applications need more than 4 channels (maybe 5 for CMYK + alpha | ||||||
|  |  * mask).  We recommend 10 as a reasonable compromise; use 4 if you are | ||||||
|  |  * really short on memory.  (Each allowed component costs a hundred or so | ||||||
|  |  * bytes of storage, whether actually used in an image or not.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define MAX_COMPONENTS  10	/* maximum number of image components */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Basic data types. | ||||||
|  |  * You may need to change these if you have a machine with unusual data | ||||||
|  |  * type sizes; for example, "char" not 8 bits, "short" not 16 bits, | ||||||
|  |  * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits, | ||||||
|  |  * but it had better be at least 16. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Representation of a single sample (pixel element value).
 | ||||||
|  |  * We frequently allocate large arrays of these, so it's important to keep | ||||||
|  |  * them small.  But if you have memory to burn and access to char or short | ||||||
|  |  * arrays is very slow on your hardware, you might want to change these. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 8 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..255.
 | ||||||
|  |  * You can use a signed char by having GETJSAMPLE mask it with 0xFF. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | 
 | ||||||
|  | typedef unsigned char JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | typedef char JSAMPLE; | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | #else | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value) & 0xFF) | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	255 | ||||||
|  | #define CENTERJSAMPLE	128 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 8 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 12 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..4095.
 | ||||||
|  |  * On nearly all machines "short" will do nicely. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	4095 | ||||||
|  | #define CENTERJSAMPLE	2048 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 12 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Representation of a DCT frequency coefficient.
 | ||||||
|  |  * This should be a signed value of at least 16 bits; "short" is usually OK. | ||||||
|  |  * Again, we allocate large arrays of these, but you can change to int | ||||||
|  |  * if you have memory to burn and "short" is really slow. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JCOEF; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Compressed datastreams are represented as arrays of JOCTET.
 | ||||||
|  |  * These must be EXACTLY 8 bits wide, at least once they are written to | ||||||
|  |  * external storage.  Note that when using the stdio data source/destination | ||||||
|  |  * managers, this is also the data type passed to fread/fwrite. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | 
 | ||||||
|  | typedef unsigned char JOCTET; | ||||||
|  | #define GETJOCTET(value)  (value) | ||||||
|  | 
 | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | typedef char JOCTET; | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | #define GETJOCTET(value)  (value) | ||||||
|  | #else | ||||||
|  | #define GETJOCTET(value)  ((value) & 0xFF) | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* These typedefs are used for various table entries and so forth.
 | ||||||
|  |  * They must be at least as wide as specified; but making them too big | ||||||
|  |  * won't cost a huge amount of memory, so we don't provide special | ||||||
|  |  * extraction code like we did for JSAMPLE.  (In other words, these | ||||||
|  |  * typedefs live at a different point on the speed/space tradeoff curve.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* UINT8 must hold at least the values 0..255. */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | typedef unsigned char UINT8; | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | typedef char UINT8; | ||||||
|  | #else /* not CHAR_IS_UNSIGNED */ | ||||||
|  | typedef short UINT8; | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | /* UINT16 must hold at least the values 0..65535. */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_SHORT | ||||||
|  | typedef unsigned short UINT16; | ||||||
|  | #else /* not HAVE_UNSIGNED_SHORT */ | ||||||
|  | typedef unsigned int UINT16; | ||||||
|  | #endif /* HAVE_UNSIGNED_SHORT */ | ||||||
|  | 
 | ||||||
|  | /* INT16 must hold at least the values -32768..32767. */ | ||||||
|  | 
 | ||||||
|  | #ifndef XMD_H			/* X11/xmd.h correctly defines INT16 */ | ||||||
|  | typedef short INT16; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* INT32 must hold at least signed 32-bit values. */ | ||||||
|  | 
 | ||||||
|  | #ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */ | ||||||
|  | #ifndef _BASETSD_H_		/* Microsoft defines it in basetsd.h */ | ||||||
|  | #ifndef _BASETSD_H		/* MinGW is slightly different */ | ||||||
|  | #ifndef QGLOBAL_H		/* Qt defines it in qglobal.h */ | ||||||
|  | typedef long INT32; | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Datatype used for image dimensions.  The JPEG standard only supports
 | ||||||
|  |  * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore | ||||||
|  |  * "unsigned int" is sufficient on all machines.  However, if you need to | ||||||
|  |  * handle larger images and you don't mind deviating from the spec, you | ||||||
|  |  * can change this datatype. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef unsigned int JDIMENSION; | ||||||
|  | 
 | ||||||
|  | #define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* These macros are used in all function definitions and extern declarations.
 | ||||||
|  |  * You could modify them if you need to change function linkage conventions; | ||||||
|  |  * in particular, you'll need to do that to make the library a Windows DLL. | ||||||
|  |  * Another application is to make all functions global for use with debuggers | ||||||
|  |  * or code profilers that require it. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* a function called through method pointers: */ | ||||||
|  | #define METHODDEF(type)		static type | ||||||
|  | /* a function used only in its module: */ | ||||||
|  | #define LOCAL(type)		static type | ||||||
|  | /* a function referenced thru EXTERNs: */ | ||||||
|  | #define GLOBAL(type)		type | ||||||
|  | /* a reference to a GLOBAL function: */ | ||||||
|  | #define EXTERN(type)		extern type | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* This macro is used to declare a "method", that is, a function pointer.
 | ||||||
|  |  * We want to supply prototype parameters if the compiler can cope. | ||||||
|  |  * Note that the arglist parameter must be parenthesized! | ||||||
|  |  * Again, you can customize this if you need special linkage keywords. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_PROTOTYPES | ||||||
|  | #define JMETHOD(type,methodname,arglist)  type (*methodname) arglist | ||||||
|  | #else | ||||||
|  | #define JMETHOD(type,methodname,arglist)  type (*methodname) () | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Here is the pseudo-keyword for declaring pointers that must be "far"
 | ||||||
|  |  * on 80x86 machines.  Most of the specialized coding for 80x86 is handled | ||||||
|  |  * by just saying "FAR *" where such a pointer is needed.  In a few places | ||||||
|  |  * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef FAR | ||||||
|  | #ifdef NEED_FAR_POINTERS | ||||||
|  | #define FAR  far | ||||||
|  | #else | ||||||
|  | #define FAR | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * On a few systems, type boolean and/or its values FALSE, TRUE may appear | ||||||
|  |  * in standard header files.  Or you may have conflicts with application- | ||||||
|  |  * specific header files that you want to include together with these files. | ||||||
|  |  * Defining HAVE_BOOLEAN before including jpeglib.h should make it work. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef HAVE_BOOLEAN | ||||||
|  | typedef int boolean; | ||||||
|  | #endif | ||||||
|  | #ifndef FALSE			/* in case these macros already exist */ | ||||||
|  | #define FALSE	0		/* values of boolean */ | ||||||
|  | #endif | ||||||
|  | #ifndef TRUE | ||||||
|  | #define TRUE	1 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * The remaining options affect code selection within the JPEG library, | ||||||
|  |  * but they don't need to be visible to most applications using the library. | ||||||
|  |  * To minimize application namespace pollution, the symbols won't be | ||||||
|  |  * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNALS | ||||||
|  | #define JPEG_INTERNAL_OPTIONS | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNAL_OPTIONS | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * These defines indicate whether to include various optional functions. | ||||||
|  |  * Undefining some of these symbols will produce a smaller but less capable | ||||||
|  |  * library.  Note that you can leave certain source files out of the | ||||||
|  |  * compilation/linking process if you've #undef'd the corresponding symbols. | ||||||
|  |  * (You may HAVE to do that if your compiler doesn't like null source files.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Capability options common to encoder and decoder: */ | ||||||
|  | 
 | ||||||
|  | #define DCT_ISLOW_SUPPORTED	/* slow but accurate integer algorithm */ | ||||||
|  | #define DCT_IFAST_SUPPORTED	/* faster, less accurate integer method */ | ||||||
|  | #define DCT_FLOAT_SUPPORTED	/* floating-point: accurate, fast on fast HW */ | ||||||
|  | 
 | ||||||
|  | /* Encoder capability options: */ | ||||||
|  | 
 | ||||||
|  | #define C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */ | ||||||
|  | #define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ | ||||||
|  | #define C_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/ | ||||||
|  | #define DCT_SCALING_SUPPORTED	    /* Input rescaling via DCT? (Requires DCT_ISLOW)*/ | ||||||
|  | #define ENTROPY_OPT_SUPPORTED	    /* Optimization of entropy coding parms? */ | ||||||
|  | /* Note: if you selected 12-bit data precision, it is dangerous to turn off
 | ||||||
|  |  * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit | ||||||
|  |  * precision, so jchuff.c normally uses entropy optimization to compute | ||||||
|  |  * usable tables for higher precision.  If you don't want to do optimization, | ||||||
|  |  * you'll have to supply different default Huffman tables. | ||||||
|  |  * The exact same statements apply for progressive JPEG: the default tables | ||||||
|  |  * don't work for progressive mode.  (This may get fixed, however.) | ||||||
|  |  */ | ||||||
|  | #define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */ | ||||||
|  | 
 | ||||||
|  | /* Decoder capability options: */ | ||||||
|  | 
 | ||||||
|  | #define D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */ | ||||||
|  | #define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ | ||||||
|  | #define D_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/ | ||||||
|  | #define IDCT_SCALING_SUPPORTED	    /* Output rescaling via IDCT? */ | ||||||
|  | #define SAVE_MARKERS_SUPPORTED	    /* jpeg_save_markers() needed? */ | ||||||
|  | #define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */ | ||||||
|  | #undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */ | ||||||
|  | #define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */ | ||||||
|  | #define QUANT_1PASS_SUPPORTED	    /* 1-pass color quantization? */ | ||||||
|  | #define QUANT_2PASS_SUPPORTED	    /* 2-pass color quantization? */ | ||||||
|  | 
 | ||||||
|  | /* more capability options later, no doubt */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Ordering of RGB data in scanlines passed to or from the application. | ||||||
|  |  * If your application wants to deal with data in the order B,G,R, just | ||||||
|  |  * change these macros.  You can also deal with formats such as R,G,B,X | ||||||
|  |  * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing | ||||||
|  |  * the offsets will also change the order in which colormap data is organized. | ||||||
|  |  * RESTRICTIONS: | ||||||
|  |  * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats. | ||||||
|  |  * 2. The color quantizer modules will not behave desirably if RGB_PIXELSIZE | ||||||
|  |  *    is not 3 (they don't understand about dummy color components!).  So you | ||||||
|  |  *    can't use color quantization if you change that value. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define RGB_RED		0	/* Offset of Red in an RGB scanline element */ | ||||||
|  | #define RGB_GREEN	1	/* Offset of Green */ | ||||||
|  | #define RGB_BLUE	2	/* Offset of Blue */ | ||||||
|  | #define RGB_PIXELSIZE	3	/* JSAMPLEs per RGB scanline element */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Definitions for speed-related optimizations. */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* If your compiler supports inline functions, define INLINE
 | ||||||
|  |  * as the inline keyword; otherwise define it as empty. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef INLINE | ||||||
|  | #ifdef __GNUC__			/* for instance, GNU C knows about inline */ | ||||||
|  | #define INLINE __inline__ | ||||||
|  | #endif | ||||||
|  | #ifndef INLINE | ||||||
|  | #define INLINE			/* default is to define it as empty */ | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
 | ||||||
|  |  * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER | ||||||
|  |  * as short on such a machine.  MULTIPLIER must be at least 16 bits wide. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef MULTIPLIER | ||||||
|  | #define MULTIPLIER  int		/* type for fastest integer multiply */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* FAST_FLOAT should be either float or double, whichever is done faster
 | ||||||
|  |  * by your compiler.  (Note that this type is only used in the floating point | ||||||
|  |  * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.) | ||||||
|  |  * Typically, float is faster in ANSI C compilers, while double is faster in | ||||||
|  |  * pre-ANSI compilers (because they insist on converting to double anyway). | ||||||
|  |  * The code below therefore chooses float if we have ANSI-style prototypes. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef FAST_FLOAT | ||||||
|  | #ifdef HAVE_PROTOTYPES | ||||||
|  | #define FAST_FLOAT  float | ||||||
|  | #else | ||||||
|  | #define FAST_FLOAT  double | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_INTERNAL_OPTIONS */ | ||||||
							
								
								
									
										1160
									
								
								libs/platform/RK1808/libjpeg/include/jpeglib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1160
									
								
								libs/platform/RK1808/libjpeg/include/jpeglib.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.la
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.la
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | # libjpeg.la - a libtool library file | ||||||
|  | # Generated by libtool (GNU libtool) 2.4.2 | ||||||
|  | # | ||||||
|  | # Please DO NOT delete this file! | ||||||
|  | # It is necessary for linking the library. | ||||||
|  | 
 | ||||||
|  | # The name that we can dlopen(3). | ||||||
|  | dlname='libjpeg.so.8' | ||||||
|  | 
 | ||||||
|  | # Names of this library. | ||||||
|  | library_names='libjpeg.so.8.4.0 libjpeg.so.8 libjpeg.so' | ||||||
|  | 
 | ||||||
|  | # The name of the static archive. | ||||||
|  | old_library='libjpeg.a' | ||||||
|  | 
 | ||||||
|  | # Linker flags that can not go in dependency_libs. | ||||||
|  | inherited_linker_flags='' | ||||||
|  | 
 | ||||||
|  | # Libraries that this one depends upon. | ||||||
|  | dependency_libs=' -L/home/xz/Documents/testing/compile_test/lpng1637/zlib/rk1808/lib' | ||||||
|  | 
 | ||||||
|  | # Names of additional weak libraries provided by this library | ||||||
|  | weak_library_names='' | ||||||
|  | 
 | ||||||
|  | # Version information for libjpeg. | ||||||
|  | current=12 | ||||||
|  | age=4 | ||||||
|  | revision=0 | ||||||
|  | 
 | ||||||
|  | # Is this an already installed library? | ||||||
|  | installed=yes | ||||||
|  | 
 | ||||||
|  | # Should we warn about portability when linking against -modules? | ||||||
|  | shouldnotlink=no | ||||||
|  | 
 | ||||||
|  | # Files to dlopen/dlpreopen | ||||||
|  | dlopen='' | ||||||
|  | dlpreopen='' | ||||||
|  | 
 | ||||||
|  | # Directory that this library needs to be installed in: | ||||||
|  | libdir='/home/xz/Documents/testing/compile_test/jpegsrc.v8d1/jpeg-8d1/rk1808/lib' | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so.8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so.8
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so.8.4.0
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libjpeg/lib/Linux/libjpeg.so.8.4.0
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										127
									
								
								libs/platform/RK1808/libpng/bin/libpng-config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								libs/platform/RK1808/libpng/bin/libpng-config
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | 
 | ||||||
|  | # libpng-config | ||||||
|  | # provides configuration info for libpng. | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2002, 2004, 2006, 2007 Glenn Randers-Pehrson | ||||||
|  | 
 | ||||||
|  | # This code is released under the libpng license. | ||||||
|  | # For conditions of distribution and use, see the disclaimer | ||||||
|  | # and license in png.h | ||||||
|  | 
 | ||||||
|  | # Modeled after libxml-config. | ||||||
|  | 
 | ||||||
|  | version="1.6.37" | ||||||
|  | prefix="//home/xz/Documents/testing/compile_test/lpng1637/rk1808" | ||||||
|  | exec_prefix="${prefix}" | ||||||
|  | libdir="${exec_prefix}/lib" | ||||||
|  | includedir="${prefix}/include/libpng16" | ||||||
|  | libs="-lpng16" | ||||||
|  | all_libs="-lpng16 -lm -lz -lm " | ||||||
|  | I_opts="-I${includedir}" | ||||||
|  | L_opts="-L${libdir}" | ||||||
|  | R_opts="" | ||||||
|  | cppflags="" | ||||||
|  | ccopts="" | ||||||
|  | ldopts="" | ||||||
|  | 
 | ||||||
|  | usage() | ||||||
|  | { | ||||||
|  |     cat <<EOF | ||||||
|  | Usage: $0 [OPTION] ... | ||||||
|  | 
 | ||||||
|  | Known values for OPTION are: | ||||||
|  | 
 | ||||||
|  |   --prefix        print libpng prefix | ||||||
|  |   --libdir        print path to directory containing library | ||||||
|  |   --libs          print library linking information | ||||||
|  |   --ccopts        print compiler options | ||||||
|  |   --cppflags      print pre-processor flags | ||||||
|  |   --cflags        print preprocessor flags, I_opts, and compiler options | ||||||
|  |   --I_opts        print "-I" include options | ||||||
|  |   --L_opts        print linker "-L" flags for dynamic linking | ||||||
|  |   --R_opts        print dynamic linker "-R" or "-rpath" flags | ||||||
|  |   --ldopts        print linker options | ||||||
|  |   --ldflags       print linker flags (ldopts, L_opts, R_opts, and libs) | ||||||
|  |   --static        revise subsequent outputs for static linking | ||||||
|  |   --help          print this help and exit | ||||||
|  |   --version       print version information | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  |     exit $1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if test $# -eq 0; then | ||||||
|  |     usage 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | while test $# -gt 0; do | ||||||
|  |     case "$1" in | ||||||
|  | 
 | ||||||
|  |     --prefix) | ||||||
|  |         echo ${prefix} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --version) | ||||||
|  |         echo ${version} | ||||||
|  |         exit 0 | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --help) | ||||||
|  |         usage 0 | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ccopts) | ||||||
|  |         echo ${ccopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --cppflags) | ||||||
|  |         echo ${cppflags} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --cflags) | ||||||
|  |         echo ${I_opts} ${cppflags} ${ccopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --libdir) | ||||||
|  |         echo ${libdir} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --libs) | ||||||
|  |         echo ${libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --I_opts) | ||||||
|  |         echo ${I_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --L_opts) | ||||||
|  |         echo ${L_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --R_opts) | ||||||
|  |         echo ${R_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ldopts) | ||||||
|  |         echo ${ldopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ldflags) | ||||||
|  |         echo ${ldopts} ${L_opts} ${R_opts} ${libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --static) | ||||||
|  |         R_opts="" | ||||||
|  |         libs=${all_libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     *) | ||||||
|  |         usage | ||||||
|  |         exit 1 | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     shift | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										127
									
								
								libs/platform/RK1808/libpng/bin/libpng16-config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								libs/platform/RK1808/libpng/bin/libpng16-config
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | 
 | ||||||
|  | # libpng-config | ||||||
|  | # provides configuration info for libpng. | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2002, 2004, 2006, 2007 Glenn Randers-Pehrson | ||||||
|  | 
 | ||||||
|  | # This code is released under the libpng license. | ||||||
|  | # For conditions of distribution and use, see the disclaimer | ||||||
|  | # and license in png.h | ||||||
|  | 
 | ||||||
|  | # Modeled after libxml-config. | ||||||
|  | 
 | ||||||
|  | version="1.6.37" | ||||||
|  | prefix="//home/xz/Documents/testing/compile_test/lpng1637/rk1808" | ||||||
|  | exec_prefix="${prefix}" | ||||||
|  | libdir="${exec_prefix}/lib" | ||||||
|  | includedir="${prefix}/include/libpng16" | ||||||
|  | libs="-lpng16" | ||||||
|  | all_libs="-lpng16 -lm -lz -lm " | ||||||
|  | I_opts="-I${includedir}" | ||||||
|  | L_opts="-L${libdir}" | ||||||
|  | R_opts="" | ||||||
|  | cppflags="" | ||||||
|  | ccopts="" | ||||||
|  | ldopts="" | ||||||
|  | 
 | ||||||
|  | usage() | ||||||
|  | { | ||||||
|  |     cat <<EOF | ||||||
|  | Usage: $0 [OPTION] ... | ||||||
|  | 
 | ||||||
|  | Known values for OPTION are: | ||||||
|  | 
 | ||||||
|  |   --prefix        print libpng prefix | ||||||
|  |   --libdir        print path to directory containing library | ||||||
|  |   --libs          print library linking information | ||||||
|  |   --ccopts        print compiler options | ||||||
|  |   --cppflags      print pre-processor flags | ||||||
|  |   --cflags        print preprocessor flags, I_opts, and compiler options | ||||||
|  |   --I_opts        print "-I" include options | ||||||
|  |   --L_opts        print linker "-L" flags for dynamic linking | ||||||
|  |   --R_opts        print dynamic linker "-R" or "-rpath" flags | ||||||
|  |   --ldopts        print linker options | ||||||
|  |   --ldflags       print linker flags (ldopts, L_opts, R_opts, and libs) | ||||||
|  |   --static        revise subsequent outputs for static linking | ||||||
|  |   --help          print this help and exit | ||||||
|  |   --version       print version information | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  |     exit $1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if test $# -eq 0; then | ||||||
|  |     usage 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | while test $# -gt 0; do | ||||||
|  |     case "$1" in | ||||||
|  | 
 | ||||||
|  |     --prefix) | ||||||
|  |         echo ${prefix} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --version) | ||||||
|  |         echo ${version} | ||||||
|  |         exit 0 | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --help) | ||||||
|  |         usage 0 | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ccopts) | ||||||
|  |         echo ${ccopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --cppflags) | ||||||
|  |         echo ${cppflags} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --cflags) | ||||||
|  |         echo ${I_opts} ${cppflags} ${ccopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --libdir) | ||||||
|  |         echo ${libdir} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --libs) | ||||||
|  |         echo ${libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --I_opts) | ||||||
|  |         echo ${I_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --L_opts) | ||||||
|  |         echo ${L_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --R_opts) | ||||||
|  |         echo ${R_opts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ldopts) | ||||||
|  |         echo ${ldopts} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --ldflags) | ||||||
|  |         echo ${ldopts} ${L_opts} ${R_opts} ${libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     --static) | ||||||
|  |         R_opts="" | ||||||
|  |         libs=${all_libs} | ||||||
|  |         ;; | ||||||
|  | 
 | ||||||
|  |     *) | ||||||
|  |         usage | ||||||
|  |         exit 1 | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     shift | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/bin/png-fix-itxt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/bin/png-fix-itxt
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/bin/pngfix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/bin/pngfix
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3247
									
								
								libs/platform/RK1808/libpng/include/libpng16/png.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3247
									
								
								libs/platform/RK1808/libpng/include/libpng16/png.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										623
									
								
								libs/platform/RK1808/libpng/include/libpng16/pngconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										623
									
								
								libs/platform/RK1808/libpng/include/libpng16/pngconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,623 @@ | |||||||
|  | 
 | ||||||
|  | /* pngconf.h - machine-configurable file for libpng
 | ||||||
|  |  * | ||||||
|  |  * libpng version 1.6.37 | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2018-2019 Cosmin Truta | ||||||
|  |  * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson | ||||||
|  |  * Copyright (c) 1996-1997 Andreas Dilger | ||||||
|  |  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. | ||||||
|  |  * | ||||||
|  |  * This code is released under the libpng license. | ||||||
|  |  * For conditions of distribution and use, see the disclaimer | ||||||
|  |  * and license in png.h | ||||||
|  |  * | ||||||
|  |  * Any machine specific code is near the front of this file, so if you | ||||||
|  |  * are configuring libpng for a machine, you may want to read the section | ||||||
|  |  * starting here down to where it starts to typedef png_color, png_text, | ||||||
|  |  * and png_info. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNGCONF_H | ||||||
|  | #define PNGCONF_H | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ | ||||||
|  | 
 | ||||||
|  | /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C
 | ||||||
|  |  * compiler for correct compilation.  The following header files are required by | ||||||
|  |  * the standard.  If your compiler doesn't provide these header files, or they | ||||||
|  |  * do not match the standard, you will need to provide/improve them. | ||||||
|  |  */ | ||||||
|  | #include <limits.h> | ||||||
|  | #include <stddef.h> | ||||||
|  | 
 | ||||||
|  | /* Library header files.  These header files are all defined by ISOC90; libpng
 | ||||||
|  |  * expects conformant implementations, however, an ISOC90 conformant system need | ||||||
|  |  * not provide these header files if the functionality cannot be implemented. | ||||||
|  |  * In this case it will be necessary to disable the relevant parts of libpng in | ||||||
|  |  * the build of pnglibconf.h. | ||||||
|  |  * | ||||||
|  |  * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not | ||||||
|  |  * include this unnecessary header file. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_STDIO_SUPPORTED | ||||||
|  |    /* Required for the definition of FILE: */ | ||||||
|  | #  include <stdio.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_SETJMP_SUPPORTED | ||||||
|  |    /* Required for the definition of jmp_buf and the declaration of longjmp: */ | ||||||
|  | #  include <setjmp.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_CONVERT_tIME_SUPPORTED | ||||||
|  |    /* Required for struct tm: */ | ||||||
|  | #  include <time.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0, it was possible to turn off 'const' in declarations,
 | ||||||
|  |  * using PNG_NO_CONST.  This is no longer supported. | ||||||
|  |  */ | ||||||
|  | #define PNG_CONST const /* backward compatibility only */ | ||||||
|  | 
 | ||||||
|  | /* This controls optimization of the reading of 16-bit and 32-bit
 | ||||||
|  |  * values from PNG files.  It can be set on a per-app-file basis: it | ||||||
|  |  * just changes whether a macro is used when the function is called. | ||||||
|  |  * The library builder sets the default; if read functions are not | ||||||
|  |  * built into the library the macro implementation is forced on. | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #  define PNG_USE_READ_MACROS | ||||||
|  | #endif | ||||||
|  | #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) | ||||||
|  | #  if PNG_DEFAULT_READ_MACROS | ||||||
|  | #    define PNG_USE_READ_MACROS | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* COMPILER SPECIFIC OPTIONS.
 | ||||||
|  |  * | ||||||
|  |  * These options are provided so that a variety of difficult compilers | ||||||
|  |  * can be used.  Some are fixed at build time (e.g. PNG_API_RULE | ||||||
|  |  * below) but still have compiler specific implementations, others | ||||||
|  |  * may be changed on a per-file basis when compiling against libpng. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect
 | ||||||
|  |  * against legacy (pre ISOC90) compilers that did not understand function | ||||||
|  |  * prototypes.  It is not required for modern C compilers. | ||||||
|  |  */ | ||||||
|  | #ifndef PNGARG | ||||||
|  | #  define PNGARG(arglist) arglist | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Function calling conventions.
 | ||||||
|  |  * ============================= | ||||||
|  |  * Normally it is not necessary to specify to the compiler how to call | ||||||
|  |  * a function - it just does it - however on x86 systems derived from | ||||||
|  |  * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems | ||||||
|  |  * and some others) there are multiple ways to call a function and the | ||||||
|  |  * default can be changed on the compiler command line.  For this reason | ||||||
|  |  * libpng specifies the calling convention of every exported function and | ||||||
|  |  * every function called via a user supplied function pointer.  This is | ||||||
|  |  * done in this file by defining the following macros: | ||||||
|  |  * | ||||||
|  |  * PNGAPI    Calling convention for exported functions. | ||||||
|  |  * PNGCBAPI  Calling convention for user provided (callback) functions. | ||||||
|  |  * PNGCAPI   Calling convention used by the ANSI-C library (required | ||||||
|  |  *           for longjmp callbacks and sometimes used internally to | ||||||
|  |  *           specify the calling convention for zlib). | ||||||
|  |  * | ||||||
|  |  * These macros should never be overridden.  If it is necessary to | ||||||
|  |  * change calling convention in a private build this can be done | ||||||
|  |  * by setting PNG_API_RULE (which defaults to 0) to one of the values | ||||||
|  |  * below to select the correct 'API' variants. | ||||||
|  |  * | ||||||
|  |  * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. | ||||||
|  |  *                This is correct in every known environment. | ||||||
|  |  * PNG_API_RULE=1 Use the operating system convention for PNGAPI and | ||||||
|  |  *                the 'C' calling convention (from PNGCAPI) for | ||||||
|  |  *                callbacks (PNGCBAPI).  This is no longer required | ||||||
|  |  *                in any known environment - if it has to be used | ||||||
|  |  *                please post an explanation of the problem to the | ||||||
|  |  *                libpng mailing list. | ||||||
|  |  * | ||||||
|  |  * These cases only differ if the operating system does not use the C | ||||||
|  |  * calling convention, at present this just means the above cases | ||||||
|  |  * (x86 DOS/Windows systems) and, even then, this does not apply to | ||||||
|  |  * Cygwin running on those systems. | ||||||
|  |  * | ||||||
|  |  * Note that the value must be defined in pnglibconf.h so that what | ||||||
|  |  * the application uses to call the library matches the conventions | ||||||
|  |  * set when building the library. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Symbol export
 | ||||||
|  |  * ============= | ||||||
|  |  * When building a shared library it is almost always necessary to tell | ||||||
|  |  * the compiler which symbols to export.  The png.h macro 'PNG_EXPORT' | ||||||
|  |  * is used to mark the symbols.  On some systems these symbols can be | ||||||
|  |  * extracted at link time and need no special processing by the compiler, | ||||||
|  |  * on other systems the symbols are flagged by the compiler and just | ||||||
|  |  * the declaration requires a special tag applied (unfortunately) in a | ||||||
|  |  * compiler dependent way.  Some systems can do either. | ||||||
|  |  * | ||||||
|  |  * A small number of older systems also require a symbol from a DLL to | ||||||
|  |  * be flagged to the program that calls it.  This is a problem because | ||||||
|  |  * we do not know in the header file included by application code that | ||||||
|  |  * the symbol will come from a shared library, as opposed to a statically | ||||||
|  |  * linked one.  For this reason the application must tell us by setting | ||||||
|  |  * the magic flag PNG_USE_DLL to turn on the special processing before | ||||||
|  |  * it includes png.h. | ||||||
|  |  * | ||||||
|  |  * Four additional macros are used to make this happen: | ||||||
|  |  * | ||||||
|  |  * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from | ||||||
|  |  *            the build or imported if PNG_USE_DLL is set - compiler | ||||||
|  |  *            and system specific. | ||||||
|  |  * | ||||||
|  |  * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to | ||||||
|  |  *                       'type', compiler specific. | ||||||
|  |  * | ||||||
|  |  * PNG_DLL_EXPORT Set to the magic to use during a libpng build to | ||||||
|  |  *                make a symbol exported from the DLL.  Not used in the | ||||||
|  |  *                public header files; see pngpriv.h for how it is used | ||||||
|  |  *                in the libpng build. | ||||||
|  |  * | ||||||
|  |  * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come | ||||||
|  |  *                from a DLL - used to define PNG_IMPEXP when | ||||||
|  |  *                PNG_USE_DLL is set. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* System specific discovery.
 | ||||||
|  |  * ========================== | ||||||
|  |  * This code is used at build time to find PNG_IMPEXP, the API settings | ||||||
|  |  * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL | ||||||
|  |  * import processing is possible.  On Windows systems it also sets | ||||||
|  |  * compiler-specific macros to the values required to change the calling | ||||||
|  |  * conventions of the various functions. | ||||||
|  |  */ | ||||||
|  | #if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ | ||||||
|  |     defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | ||||||
|  |   /* Windows system (DOS doesn't support DLLs).  Includes builds under Cygwin or
 | ||||||
|  |    * MinGW on any architecture currently supported by Windows.  Also includes | ||||||
|  |    * Watcom builds but these need special treatment because they are not | ||||||
|  |    * compatible with GCC or Visual C because of different calling conventions. | ||||||
|  |    */ | ||||||
|  | #  if PNG_API_RULE == 2 | ||||||
|  |    /* If this line results in an error, either because __watcall is not
 | ||||||
|  |     * understood or because of a redefine just below you cannot use *this* | ||||||
|  |     * build of the library with the compiler you are using.  *This* build was | ||||||
|  |     * build using Watcom and applications must also be built using Watcom! | ||||||
|  |     */ | ||||||
|  | #    define PNGCAPI __watcall | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) | ||||||
|  | #    define PNGCAPI __cdecl | ||||||
|  | #    if PNG_API_RULE == 1 | ||||||
|  |    /* If this line results in an error __stdcall is not understood and
 | ||||||
|  |     * PNG_API_RULE should not have been set to '1'. | ||||||
|  |     */ | ||||||
|  | #      define PNGAPI __stdcall | ||||||
|  | #    endif | ||||||
|  | #  else | ||||||
|  |    /* An older compiler, or one not detected (erroneously) above,
 | ||||||
|  |     * if necessary override on the command line to get the correct | ||||||
|  |     * variants for the compiler. | ||||||
|  |     */ | ||||||
|  | #    ifndef PNGCAPI | ||||||
|  | #      define PNGCAPI _cdecl | ||||||
|  | #    endif | ||||||
|  | #    if PNG_API_RULE == 1 && !defined(PNGAPI) | ||||||
|  | #      define PNGAPI _stdcall | ||||||
|  | #    endif | ||||||
|  | #  endif /* compiler/api */ | ||||||
|  | 
 | ||||||
|  |   /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ | ||||||
|  | 
 | ||||||
|  | #  if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) | ||||||
|  | #     error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  if (defined(_MSC_VER) && _MSC_VER < 800) ||\ | ||||||
|  |       (defined(__BORLANDC__) && __BORLANDC__ < 0x500) | ||||||
|  |    /* older Borland and MSC
 | ||||||
|  |     * compilers used '__export' and required this to be after | ||||||
|  |     * the type. | ||||||
|  |     */ | ||||||
|  | #    ifndef PNG_EXPORT_TYPE | ||||||
|  | #      define PNG_EXPORT_TYPE(type) type PNG_IMPEXP | ||||||
|  | #    endif | ||||||
|  | #    define PNG_DLL_EXPORT __export | ||||||
|  | #  else /* newer compiler */ | ||||||
|  | #    define PNG_DLL_EXPORT __declspec(dllexport) | ||||||
|  | #    ifndef PNG_DLL_IMPORT | ||||||
|  | #      define PNG_DLL_IMPORT __declspec(dllimport) | ||||||
|  | #    endif | ||||||
|  | #  endif /* compiler */ | ||||||
|  | 
 | ||||||
|  | #else /* !Windows */ | ||||||
|  | #  if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) | ||||||
|  | #    define PNGAPI _System | ||||||
|  | #  else /* !Windows/x86 && !OS/2 */ | ||||||
|  |    /* Use the defaults, or define PNG*API on the command line (but
 | ||||||
|  |     * this will have to be done for every compile!) | ||||||
|  |     */ | ||||||
|  | #  endif /* other system, !OS/2 */ | ||||||
|  | #endif /* !Windows/x86 */ | ||||||
|  | 
 | ||||||
|  | /* Now do all the defaulting . */ | ||||||
|  | #ifndef PNGCAPI | ||||||
|  | #  define PNGCAPI | ||||||
|  | #endif | ||||||
|  | #ifndef PNGCBAPI | ||||||
|  | #  define PNGCBAPI PNGCAPI | ||||||
|  | #endif | ||||||
|  | #ifndef PNGAPI | ||||||
|  | #  define PNGAPI PNGCAPI | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* PNG_IMPEXP may be set on the compilation system command line or (if not set)
 | ||||||
|  |  * then in an internal header file when building the library, otherwise (when | ||||||
|  |  * using the library) it is set here. | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_IMPEXP | ||||||
|  | #  if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) | ||||||
|  |    /* This forces use of a DLL, disallowing static linking */ | ||||||
|  | #    define PNG_IMPEXP PNG_DLL_IMPORT | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  ifndef PNG_IMPEXP | ||||||
|  | #    define PNG_IMPEXP | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat
 | ||||||
|  |  * 'attributes' as a storage class - the attributes go at the start of the | ||||||
|  |  * function definition, and attributes are always appended regardless of the | ||||||
|  |  * compiler.  This considerably simplifies these macros but may cause problems | ||||||
|  |  * if any compilers both need function attributes and fail to handle them as | ||||||
|  |  * a storage class (this is unlikely.) | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_FUNCTION | ||||||
|  | #  define PNG_FUNCTION(type, name, args, attributes) attributes type name args | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_EXPORT_TYPE | ||||||
|  | #  define PNG_EXPORT_TYPE(type) PNG_IMPEXP type | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |    /* The ordinal value is only relevant when preprocessing png.h for symbol
 | ||||||
|  |     * table entries, so we discard it here.  See the .dfn files in the | ||||||
|  |     * scripts directory. | ||||||
|  |     */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_EXPORTA | ||||||
|  | #  define PNG_EXPORTA(ordinal, type, name, args, attributes) \ | ||||||
|  |       PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ | ||||||
|  |       PNG_LINKAGE_API attributes) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument,
 | ||||||
|  |  * so make something non-empty to satisfy the requirement: | ||||||
|  |  */ | ||||||
|  | #define PNG_EMPTY /*empty list*/ | ||||||
|  | 
 | ||||||
|  | #define PNG_EXPORT(ordinal, type, name, args) \ | ||||||
|  |    PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) | ||||||
|  | 
 | ||||||
|  | /* Use PNG_REMOVED to comment out a removed interface. */ | ||||||
|  | #ifndef PNG_REMOVED | ||||||
|  | #  define PNG_REMOVED(ordinal, type, name, args, attributes) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_CALLBACK | ||||||
|  | #  define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Support for compiler specific function attributes.  These are used
 | ||||||
|  |  * so that where compiler support is available incorrect use of API | ||||||
|  |  * functions in png.h will generate compiler warnings. | ||||||
|  |  * | ||||||
|  |  * Added at libpng-1.2.41. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_NO_PEDANTIC_WARNINGS | ||||||
|  | #  ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  | #    define PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  |   /* Support for compiler specific function attributes.  These are used
 | ||||||
|  |    * so that where compiler support is available, incorrect use of API | ||||||
|  |    * functions in png.h will generate compiler warnings.  Added at libpng | ||||||
|  |    * version 1.2.41.  Disabling these removes the warnings but may also produce | ||||||
|  |    * less efficient code. | ||||||
|  |    */ | ||||||
|  | #  if defined(__clang__) && defined(__has_attribute) | ||||||
|  |    /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ | ||||||
|  | #    if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) | ||||||
|  | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) | ||||||
|  | #      define PNG_NORETURN __attribute__((__noreturn__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) | ||||||
|  | #      define PNG_ALLOCATED __attribute__((__malloc__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) | ||||||
|  | #      define PNG_DEPRECATED __attribute__((__deprecated__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_PRIVATE) | ||||||
|  | #      ifdef __has_extension | ||||||
|  | #        if __has_extension(attribute_unavailable_with_message) | ||||||
|  | #          define PNG_PRIVATE __attribute__((__unavailable__(\ | ||||||
|  |              "This function is not exported by libpng."))) | ||||||
|  | #        endif | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      define PNG_RESTRICT __restrict | ||||||
|  | #    endif | ||||||
|  | 
 | ||||||
|  | #  elif defined(__GNUC__) | ||||||
|  | #    ifndef PNG_USE_RESULT | ||||||
|  | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_NORETURN | ||||||
|  | #      define PNG_NORETURN   __attribute__((__noreturn__)) | ||||||
|  | #    endif | ||||||
|  | #    if __GNUC__ >= 3 | ||||||
|  | #      ifndef PNG_ALLOCATED | ||||||
|  | #        define PNG_ALLOCATED  __attribute__((__malloc__)) | ||||||
|  | #      endif | ||||||
|  | #      ifndef PNG_DEPRECATED | ||||||
|  | #        define PNG_DEPRECATED __attribute__((__deprecated__)) | ||||||
|  | #      endif | ||||||
|  | #      ifndef PNG_PRIVATE | ||||||
|  | #        if 0 /* Doesn't work so we use deprecated instead*/ | ||||||
|  | #          define PNG_PRIVATE \ | ||||||
|  |             __attribute__((warning("This function is not exported by libpng."))) | ||||||
|  | #        else | ||||||
|  | #          define PNG_PRIVATE \ | ||||||
|  |             __attribute__((__deprecated__)) | ||||||
|  | #        endif | ||||||
|  | #      endif | ||||||
|  | #      if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) | ||||||
|  | #        ifndef PNG_RESTRICT | ||||||
|  | #          define PNG_RESTRICT __restrict | ||||||
|  | #        endif | ||||||
|  | #      endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ | ||||||
|  | #    endif /* __GNUC__ >= 3 */ | ||||||
|  | 
 | ||||||
|  | #  elif defined(_MSC_VER)  && (_MSC_VER >= 1300) | ||||||
|  | #    ifndef PNG_USE_RESULT | ||||||
|  | #      define PNG_USE_RESULT /* not supported */ | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_NORETURN | ||||||
|  | #      define PNG_NORETURN   __declspec(noreturn) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_ALLOCATED | ||||||
|  | #      if (_MSC_VER >= 1400) | ||||||
|  | #        define PNG_ALLOCATED __declspec(restrict) | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_DEPRECATED | ||||||
|  | #      define PNG_DEPRECATED __declspec(deprecated) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_PRIVATE | ||||||
|  | #      define PNG_PRIVATE __declspec(deprecated) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      if (_MSC_VER >= 1400) | ||||||
|  | #        define PNG_RESTRICT __restrict | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | 
 | ||||||
|  | #  elif defined(__WATCOMC__) | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      define PNG_RESTRICT __restrict | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif /* PNG_PEDANTIC_WARNINGS */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_DEPRECATED | ||||||
|  | #  define PNG_DEPRECATED  /* Use of this function is deprecated */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_USE_RESULT | ||||||
|  | #  define PNG_USE_RESULT  /* The result of this function must be checked */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_NORETURN | ||||||
|  | #  define PNG_NORETURN    /* This function does not return */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_ALLOCATED | ||||||
|  | #  define PNG_ALLOCATED   /* The result of the function is new memory */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_PRIVATE | ||||||
|  | #  define PNG_PRIVATE     /* This is a private libpng function */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_RESTRICT | ||||||
|  | #  define PNG_RESTRICT    /* The C99 "restrict" feature */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_FP_EXPORT     /* A floating point API. */ | ||||||
|  | #  ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | #     define PNG_FP_EXPORT(ordinal, type, name, args)\ | ||||||
|  |          PNG_EXPORT(ordinal, type, name, args); | ||||||
|  | #  else                   /* No floating point APIs */ | ||||||
|  | #     define PNG_FP_EXPORT(ordinal, type, name, args) | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_FIXED_EXPORT  /* A fixed point API. */ | ||||||
|  | #  ifdef PNG_FIXED_POINT_SUPPORTED | ||||||
|  | #     define PNG_FIXED_EXPORT(ordinal, type, name, args)\ | ||||||
|  |          PNG_EXPORT(ordinal, type, name, args); | ||||||
|  | #  else                   /* No fixed point APIs */ | ||||||
|  | #     define PNG_FIXED_EXPORT(ordinal, type, name, args) | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_BUILDING_SYMBOL_TABLE | ||||||
|  | /* Some typedefs to get us started.  These should be safe on most of the common
 | ||||||
|  |  * platforms. | ||||||
|  |  * | ||||||
|  |  * png_uint_32 and png_int_32 may, currently, be larger than required to hold a | ||||||
|  |  * 32-bit value however this is not normally advisable. | ||||||
|  |  * | ||||||
|  |  * png_uint_16 and png_int_16 should always be two bytes in size - this is | ||||||
|  |  * verified at library build time. | ||||||
|  |  * | ||||||
|  |  * png_byte must always be one byte in size. | ||||||
|  |  * | ||||||
|  |  * The checks below use constants from limits.h, as defined by the ISOC90 | ||||||
|  |  * standard. | ||||||
|  |  */ | ||||||
|  | #if CHAR_BIT == 8 && UCHAR_MAX == 255 | ||||||
|  |    typedef unsigned char png_byte; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires 8-bit bytes" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if INT_MIN == -32768 && INT_MAX == 32767 | ||||||
|  |    typedef int png_int_16; | ||||||
|  | #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 | ||||||
|  |    typedef short png_int_16; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires a signed 16-bit type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if UINT_MAX == 65535 | ||||||
|  |    typedef unsigned int png_uint_16; | ||||||
|  | #elif USHRT_MAX == 65535 | ||||||
|  |    typedef unsigned short png_uint_16; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires an unsigned 16-bit type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if INT_MIN < -2147483646 && INT_MAX > 2147483646 | ||||||
|  |    typedef int png_int_32; | ||||||
|  | #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 | ||||||
|  |    typedef long int png_int_32; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires a signed 32-bit (or more) type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if UINT_MAX > 4294967294U | ||||||
|  |    typedef unsigned int png_uint_32; | ||||||
|  | #elif ULONG_MAX > 4294967294U | ||||||
|  |    typedef unsigned long int png_uint_32; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires an unsigned 32-bit (or more) type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t.
 | ||||||
|  |  * From 1.6.0 onwards, an ISO C90 compiler, as well as a standard-compliant | ||||||
|  |  * behavior of sizeof and ptrdiff_t are required. | ||||||
|  |  * The legacy typedefs are provided here for backwards compatibility. | ||||||
|  |  */ | ||||||
|  | typedef size_t png_size_t; | ||||||
|  | typedef ptrdiff_t png_ptrdiff_t; | ||||||
|  | 
 | ||||||
|  | /* libpng needs to know the maximum value of 'size_t' and this controls the
 | ||||||
|  |  * definition of png_alloc_size_t, below.  This maximum value of size_t limits | ||||||
|  |  * but does not control the maximum allocations the library makes - there is | ||||||
|  |  * direct application control of this through png_set_user_limits(). | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_SMALL_SIZE_T | ||||||
|  |    /* Compiler specific tests for systems where size_t is known to be less than
 | ||||||
|  |     * 32 bits (some of these systems may no longer work because of the lack of | ||||||
|  |     * 'far' support; see above.) | ||||||
|  |     */ | ||||||
|  | #  if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ | ||||||
|  |    (defined(_MSC_VER) && defined(MAXSEG_64K)) | ||||||
|  | #     define PNG_SMALL_SIZE_T | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* png_alloc_size_t is guaranteed to be no smaller than size_t, and no smaller
 | ||||||
|  |  * than png_uint_32.  Casts from size_t or png_uint_32 to png_alloc_size_t are | ||||||
|  |  * not necessary; in fact, it is recommended not to use them at all, so that | ||||||
|  |  * the compiler can complain when something turns out to be problematic. | ||||||
|  |  * | ||||||
|  |  * Casts in the other direction (from png_alloc_size_t to size_t or | ||||||
|  |  * png_uint_32) should be explicitly applied; however, we do not expect to | ||||||
|  |  * encounter practical situations that require such conversions. | ||||||
|  |  * | ||||||
|  |  * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than | ||||||
|  |  * 4294967295 - i.e. less than the maximum value of png_uint_32. | ||||||
|  |  */ | ||||||
|  | #ifdef PNG_SMALL_SIZE_T | ||||||
|  |    typedef png_uint_32 png_alloc_size_t; | ||||||
|  | #else | ||||||
|  |    typedef size_t png_alloc_size_t; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler
 | ||||||
|  |  * implementations of Intel CPU specific support of user-mode segmented address | ||||||
|  |  * spaces, where 16-bit pointers address more than 65536 bytes of memory using | ||||||
|  |  * separate 'segment' registers.  The implementation requires two different | ||||||
|  |  * types of pointer (only one of which includes the segment value.) | ||||||
|  |  * | ||||||
|  |  * If required this support is available in version 1.2 of libpng and may be | ||||||
|  |  * available in versions through 1.5, although the correctness of the code has | ||||||
|  |  * not been verified recently. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Typedef for floating-point numbers that are converted to fixed-point with a
 | ||||||
|  |  * multiple of 100,000, e.g., gamma | ||||||
|  |  */ | ||||||
|  | typedef png_int_32 png_fixed_point; | ||||||
|  | 
 | ||||||
|  | /* Add typedefs for pointers */ | ||||||
|  | typedef void                  * png_voidp; | ||||||
|  | typedef const void            * png_const_voidp; | ||||||
|  | typedef png_byte              * png_bytep; | ||||||
|  | typedef const png_byte        * png_const_bytep; | ||||||
|  | typedef png_uint_32           * png_uint_32p; | ||||||
|  | typedef const png_uint_32     * png_const_uint_32p; | ||||||
|  | typedef png_int_32            * png_int_32p; | ||||||
|  | typedef const png_int_32      * png_const_int_32p; | ||||||
|  | typedef png_uint_16           * png_uint_16p; | ||||||
|  | typedef const png_uint_16     * png_const_uint_16p; | ||||||
|  | typedef png_int_16            * png_int_16p; | ||||||
|  | typedef const png_int_16      * png_const_int_16p; | ||||||
|  | typedef char                  * png_charp; | ||||||
|  | typedef const char            * png_const_charp; | ||||||
|  | typedef png_fixed_point       * png_fixed_point_p; | ||||||
|  | typedef const png_fixed_point * png_const_fixed_point_p; | ||||||
|  | typedef size_t                * png_size_tp; | ||||||
|  | typedef const size_t          * png_const_size_tp; | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_STDIO_SUPPORTED | ||||||
|  | typedef FILE            * png_FILE_p; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | typedef double       * png_doublep; | ||||||
|  | typedef const double * png_const_doublep; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Pointers to pointers; i.e. arrays */ | ||||||
|  | typedef png_byte        * * png_bytepp; | ||||||
|  | typedef png_uint_32     * * png_uint_32pp; | ||||||
|  | typedef png_int_32      * * png_int_32pp; | ||||||
|  | typedef png_uint_16     * * png_uint_16pp; | ||||||
|  | typedef png_int_16      * * png_int_16pp; | ||||||
|  | typedef const char      * * png_const_charpp; | ||||||
|  | typedef char            * * png_charpp; | ||||||
|  | typedef png_fixed_point * * png_fixed_point_pp; | ||||||
|  | #ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | typedef double          * * png_doublepp; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Pointers to pointers to pointers; i.e., pointer to array */ | ||||||
|  | typedef char            * * * png_charppp; | ||||||
|  | 
 | ||||||
|  | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | ||||||
|  | 
 | ||||||
|  | #endif /* PNGCONF_H */ | ||||||
							
								
								
									
										219
									
								
								libs/platform/RK1808/libpng/include/libpng16/pnglibconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								libs/platform/RK1808/libpng/include/libpng16/pnglibconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,219 @@ | |||||||
|  | /* pnglibconf.h - library build configuration */ | ||||||
|  | 
 | ||||||
|  | /* libpng version 1.6.37 */ | ||||||
|  | 
 | ||||||
|  | /* Copyright (c) 2018-2019 Cosmin Truta */ | ||||||
|  | /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ | ||||||
|  | 
 | ||||||
|  | /* This code is released under the libpng license. */ | ||||||
|  | /* For conditions of distribution and use, see the disclaimer */ | ||||||
|  | /* and license in png.h */ | ||||||
|  | 
 | ||||||
|  | /* pnglibconf.h */ | ||||||
|  | /* Machine generated file: DO NOT EDIT */ | ||||||
|  | /* Derived from: scripts/pnglibconf.dfa */ | ||||||
|  | #ifndef PNGLCONF_H | ||||||
|  | #define PNGLCONF_H | ||||||
|  | /* options */ | ||||||
|  | #define PNG_16BIT_SUPPORTED | ||||||
|  | #define PNG_ALIGNED_MEMORY_SUPPORTED | ||||||
|  | /*#undef PNG_ARM_NEON_API_SUPPORTED*/ | ||||||
|  | /*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ | ||||||
|  | #define PNG_BENIGN_ERRORS_SUPPORTED | ||||||
|  | #define PNG_BENIGN_READ_ERRORS_SUPPORTED | ||||||
|  | /*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ | ||||||
|  | #define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED | ||||||
|  | #define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_COLORSPACE_SUPPORTED | ||||||
|  | #define PNG_CONSOLE_IO_SUPPORTED | ||||||
|  | #define PNG_CONVERT_tIME_SUPPORTED | ||||||
|  | #define PNG_EASY_ACCESS_SUPPORTED | ||||||
|  | /*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ | ||||||
|  | #define PNG_ERROR_TEXT_SUPPORTED | ||||||
|  | #define PNG_FIXED_POINT_SUPPORTED | ||||||
|  | #define PNG_FLOATING_ARITHMETIC_SUPPORTED | ||||||
|  | #define PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | #define PNG_FORMAT_AFIRST_SUPPORTED | ||||||
|  | #define PNG_FORMAT_BGR_SUPPORTED | ||||||
|  | #define PNG_GAMMA_SUPPORTED | ||||||
|  | #define PNG_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_HANDLE_AS_UNKNOWN_SUPPORTED | ||||||
|  | #define PNG_INCH_CONVERSIONS_SUPPORTED | ||||||
|  | #define PNG_INFO_IMAGE_SUPPORTED | ||||||
|  | #define PNG_IO_STATE_SUPPORTED | ||||||
|  | #define PNG_MNG_FEATURES_SUPPORTED | ||||||
|  | #define PNG_POINTER_INDEXING_SUPPORTED | ||||||
|  | /*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ | ||||||
|  | /*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ | ||||||
|  | #define PNG_PROGRESSIVE_READ_SUPPORTED | ||||||
|  | #define PNG_READ_16BIT_SUPPORTED | ||||||
|  | #define PNG_READ_ALPHA_MODE_SUPPORTED | ||||||
|  | #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_BACKGROUND_SUPPORTED | ||||||
|  | #define PNG_READ_BGR_SUPPORTED | ||||||
|  | #define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_READ_COMPOSITE_NODIV_SUPPORTED | ||||||
|  | #define PNG_READ_COMPRESSED_TEXT_SUPPORTED | ||||||
|  | #define PNG_READ_EXPAND_16_SUPPORTED | ||||||
|  | #define PNG_READ_EXPAND_SUPPORTED | ||||||
|  | #define PNG_READ_FILLER_SUPPORTED | ||||||
|  | #define PNG_READ_GAMMA_SUPPORTED | ||||||
|  | #define PNG_READ_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_READ_GRAY_TO_RGB_SUPPORTED | ||||||
|  | #define PNG_READ_INTERLACING_SUPPORTED | ||||||
|  | #define PNG_READ_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #define PNG_READ_INVERT_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_INVERT_SUPPORTED | ||||||
|  | #define PNG_READ_OPT_PLTE_SUPPORTED | ||||||
|  | #define PNG_READ_PACKSWAP_SUPPORTED | ||||||
|  | #define PNG_READ_PACK_SUPPORTED | ||||||
|  | #define PNG_READ_QUANTIZE_SUPPORTED | ||||||
|  | #define PNG_READ_RGB_TO_GRAY_SUPPORTED | ||||||
|  | #define PNG_READ_SCALE_16_TO_8_SUPPORTED | ||||||
|  | #define PNG_READ_SHIFT_SUPPORTED | ||||||
|  | #define PNG_READ_STRIP_16_TO_8_SUPPORTED | ||||||
|  | #define PNG_READ_STRIP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_SUPPORTED | ||||||
|  | #define PNG_READ_SWAP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_SWAP_SUPPORTED | ||||||
|  | #define PNG_READ_TEXT_SUPPORTED | ||||||
|  | #define PNG_READ_TRANSFORMS_SUPPORTED | ||||||
|  | #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_USER_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_USER_TRANSFORM_SUPPORTED | ||||||
|  | #define PNG_READ_bKGD_SUPPORTED | ||||||
|  | #define PNG_READ_cHRM_SUPPORTED | ||||||
|  | #define PNG_READ_eXIf_SUPPORTED | ||||||
|  | #define PNG_READ_gAMA_SUPPORTED | ||||||
|  | #define PNG_READ_hIST_SUPPORTED | ||||||
|  | #define PNG_READ_iCCP_SUPPORTED | ||||||
|  | #define PNG_READ_iTXt_SUPPORTED | ||||||
|  | #define PNG_READ_oFFs_SUPPORTED | ||||||
|  | #define PNG_READ_pCAL_SUPPORTED | ||||||
|  | #define PNG_READ_pHYs_SUPPORTED | ||||||
|  | #define PNG_READ_sBIT_SUPPORTED | ||||||
|  | #define PNG_READ_sCAL_SUPPORTED | ||||||
|  | #define PNG_READ_sPLT_SUPPORTED | ||||||
|  | #define PNG_READ_sRGB_SUPPORTED | ||||||
|  | #define PNG_READ_tEXt_SUPPORTED | ||||||
|  | #define PNG_READ_tIME_SUPPORTED | ||||||
|  | #define PNG_READ_tRNS_SUPPORTED | ||||||
|  | #define PNG_READ_zTXt_SUPPORTED | ||||||
|  | #define PNG_SAVE_INT_32_SUPPORTED | ||||||
|  | #define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_SEQUENTIAL_READ_SUPPORTED | ||||||
|  | #define PNG_SETJMP_SUPPORTED | ||||||
|  | #define PNG_SET_OPTION_SUPPORTED | ||||||
|  | #define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_SET_USER_LIMITS_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_BGR_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_SUPPORTED | ||||||
|  | #define PNG_STDIO_SUPPORTED | ||||||
|  | #define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_TEXT_SUPPORTED | ||||||
|  | #define PNG_TIME_RFC1123_SUPPORTED | ||||||
|  | #define PNG_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_USER_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_USER_LIMITS_SUPPORTED | ||||||
|  | #define PNG_USER_MEM_SUPPORTED | ||||||
|  | #define PNG_USER_TRANSFORM_INFO_SUPPORTED | ||||||
|  | #define PNG_USER_TRANSFORM_PTR_SUPPORTED | ||||||
|  | #define PNG_WARNINGS_SUPPORTED | ||||||
|  | #define PNG_WRITE_16BIT_SUPPORTED | ||||||
|  | #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_WRITE_BGR_SUPPORTED | ||||||
|  | #define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED | ||||||
|  | #define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED | ||||||
|  | #define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED | ||||||
|  | #define PNG_WRITE_FILLER_SUPPORTED | ||||||
|  | #define PNG_WRITE_FILTER_SUPPORTED | ||||||
|  | #define PNG_WRITE_FLUSH_SUPPORTED | ||||||
|  | #define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_WRITE_INTERLACING_SUPPORTED | ||||||
|  | #define PNG_WRITE_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #define PNG_WRITE_INVERT_ALPHA_SUPPORTED | ||||||
|  | #define PNG_WRITE_INVERT_SUPPORTED | ||||||
|  | #define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED | ||||||
|  | #define PNG_WRITE_PACKSWAP_SUPPORTED | ||||||
|  | #define PNG_WRITE_PACK_SUPPORTED | ||||||
|  | #define PNG_WRITE_SHIFT_SUPPORTED | ||||||
|  | #define PNG_WRITE_SUPPORTED | ||||||
|  | #define PNG_WRITE_SWAP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_WRITE_SWAP_SUPPORTED | ||||||
|  | #define PNG_WRITE_TEXT_SUPPORTED | ||||||
|  | #define PNG_WRITE_TRANSFORMS_SUPPORTED | ||||||
|  | #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_WRITE_USER_TRANSFORM_SUPPORTED | ||||||
|  | #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED | ||||||
|  | #define PNG_WRITE_bKGD_SUPPORTED | ||||||
|  | #define PNG_WRITE_cHRM_SUPPORTED | ||||||
|  | #define PNG_WRITE_eXIf_SUPPORTED | ||||||
|  | #define PNG_WRITE_gAMA_SUPPORTED | ||||||
|  | #define PNG_WRITE_hIST_SUPPORTED | ||||||
|  | #define PNG_WRITE_iCCP_SUPPORTED | ||||||
|  | #define PNG_WRITE_iTXt_SUPPORTED | ||||||
|  | #define PNG_WRITE_oFFs_SUPPORTED | ||||||
|  | #define PNG_WRITE_pCAL_SUPPORTED | ||||||
|  | #define PNG_WRITE_pHYs_SUPPORTED | ||||||
|  | #define PNG_WRITE_sBIT_SUPPORTED | ||||||
|  | #define PNG_WRITE_sCAL_SUPPORTED | ||||||
|  | #define PNG_WRITE_sPLT_SUPPORTED | ||||||
|  | #define PNG_WRITE_sRGB_SUPPORTED | ||||||
|  | #define PNG_WRITE_tEXt_SUPPORTED | ||||||
|  | #define PNG_WRITE_tIME_SUPPORTED | ||||||
|  | #define PNG_WRITE_tRNS_SUPPORTED | ||||||
|  | #define PNG_WRITE_zTXt_SUPPORTED | ||||||
|  | #define PNG_bKGD_SUPPORTED | ||||||
|  | #define PNG_cHRM_SUPPORTED | ||||||
|  | #define PNG_eXIf_SUPPORTED | ||||||
|  | #define PNG_gAMA_SUPPORTED | ||||||
|  | #define PNG_hIST_SUPPORTED | ||||||
|  | #define PNG_iCCP_SUPPORTED | ||||||
|  | #define PNG_iTXt_SUPPORTED | ||||||
|  | #define PNG_oFFs_SUPPORTED | ||||||
|  | #define PNG_pCAL_SUPPORTED | ||||||
|  | #define PNG_pHYs_SUPPORTED | ||||||
|  | #define PNG_sBIT_SUPPORTED | ||||||
|  | #define PNG_sCAL_SUPPORTED | ||||||
|  | #define PNG_sPLT_SUPPORTED | ||||||
|  | #define PNG_sRGB_SUPPORTED | ||||||
|  | #define PNG_tEXt_SUPPORTED | ||||||
|  | #define PNG_tIME_SUPPORTED | ||||||
|  | #define PNG_tRNS_SUPPORTED | ||||||
|  | #define PNG_zTXt_SUPPORTED | ||||||
|  | /* end of options */ | ||||||
|  | /* settings */ | ||||||
|  | #define PNG_API_RULE 0 | ||||||
|  | #define PNG_DEFAULT_READ_MACROS 1 | ||||||
|  | #define PNG_GAMMA_THRESHOLD_FIXED 5000 | ||||||
|  | #define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE | ||||||
|  | #define PNG_INFLATE_BUF_SIZE 1024 | ||||||
|  | #define PNG_LINKAGE_API extern | ||||||
|  | #define PNG_LINKAGE_CALLBACK extern | ||||||
|  | #define PNG_LINKAGE_DATA extern | ||||||
|  | #define PNG_LINKAGE_FUNCTION extern | ||||||
|  | #define PNG_MAX_GAMMA_8 11 | ||||||
|  | #define PNG_QUANTIZE_BLUE_BITS 5 | ||||||
|  | #define PNG_QUANTIZE_GREEN_BITS 5 | ||||||
|  | #define PNG_QUANTIZE_RED_BITS 5 | ||||||
|  | #define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) | ||||||
|  | #define PNG_TEXT_Z_DEFAULT_STRATEGY 0 | ||||||
|  | #define PNG_USER_CHUNK_CACHE_MAX 1000 | ||||||
|  | #define PNG_USER_CHUNK_MALLOC_MAX 8000000 | ||||||
|  | #define PNG_USER_HEIGHT_MAX 1000000 | ||||||
|  | #define PNG_USER_WIDTH_MAX 1000000 | ||||||
|  | #define PNG_ZBUF_SIZE 8192 | ||||||
|  | #define PNG_ZLIB_VERNUM 0x12b0 | ||||||
|  | #define PNG_Z_DEFAULT_COMPRESSION (-1) | ||||||
|  | #define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 | ||||||
|  | #define PNG_Z_DEFAULT_STRATEGY 1 | ||||||
|  | #define PNG_sCAL_PRECISION 5 | ||||||
|  | #define PNG_sRGB_PROFILE_CHECKS 2 | ||||||
|  | /* end of settings */ | ||||||
|  | #endif /* PNGLCONF_H */ | ||||||
							
								
								
									
										3247
									
								
								libs/platform/RK1808/libpng/include/png.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3247
									
								
								libs/platform/RK1808/libpng/include/png.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										623
									
								
								libs/platform/RK1808/libpng/include/pngconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										623
									
								
								libs/platform/RK1808/libpng/include/pngconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,623 @@ | |||||||
|  | 
 | ||||||
|  | /* pngconf.h - machine-configurable file for libpng
 | ||||||
|  |  * | ||||||
|  |  * libpng version 1.6.37 | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2018-2019 Cosmin Truta | ||||||
|  |  * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson | ||||||
|  |  * Copyright (c) 1996-1997 Andreas Dilger | ||||||
|  |  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. | ||||||
|  |  * | ||||||
|  |  * This code is released under the libpng license. | ||||||
|  |  * For conditions of distribution and use, see the disclaimer | ||||||
|  |  * and license in png.h | ||||||
|  |  * | ||||||
|  |  * Any machine specific code is near the front of this file, so if you | ||||||
|  |  * are configuring libpng for a machine, you may want to read the section | ||||||
|  |  * starting here down to where it starts to typedef png_color, png_text, | ||||||
|  |  * and png_info. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNGCONF_H | ||||||
|  | #define PNGCONF_H | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ | ||||||
|  | 
 | ||||||
|  | /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C
 | ||||||
|  |  * compiler for correct compilation.  The following header files are required by | ||||||
|  |  * the standard.  If your compiler doesn't provide these header files, or they | ||||||
|  |  * do not match the standard, you will need to provide/improve them. | ||||||
|  |  */ | ||||||
|  | #include <limits.h> | ||||||
|  | #include <stddef.h> | ||||||
|  | 
 | ||||||
|  | /* Library header files.  These header files are all defined by ISOC90; libpng
 | ||||||
|  |  * expects conformant implementations, however, an ISOC90 conformant system need | ||||||
|  |  * not provide these header files if the functionality cannot be implemented. | ||||||
|  |  * In this case it will be necessary to disable the relevant parts of libpng in | ||||||
|  |  * the build of pnglibconf.h. | ||||||
|  |  * | ||||||
|  |  * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not | ||||||
|  |  * include this unnecessary header file. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_STDIO_SUPPORTED | ||||||
|  |    /* Required for the definition of FILE: */ | ||||||
|  | #  include <stdio.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_SETJMP_SUPPORTED | ||||||
|  |    /* Required for the definition of jmp_buf and the declaration of longjmp: */ | ||||||
|  | #  include <setjmp.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_CONVERT_tIME_SUPPORTED | ||||||
|  |    /* Required for struct tm: */ | ||||||
|  | #  include <time.h> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0, it was possible to turn off 'const' in declarations,
 | ||||||
|  |  * using PNG_NO_CONST.  This is no longer supported. | ||||||
|  |  */ | ||||||
|  | #define PNG_CONST const /* backward compatibility only */ | ||||||
|  | 
 | ||||||
|  | /* This controls optimization of the reading of 16-bit and 32-bit
 | ||||||
|  |  * values from PNG files.  It can be set on a per-app-file basis: it | ||||||
|  |  * just changes whether a macro is used when the function is called. | ||||||
|  |  * The library builder sets the default; if read functions are not | ||||||
|  |  * built into the library the macro implementation is forced on. | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #  define PNG_USE_READ_MACROS | ||||||
|  | #endif | ||||||
|  | #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) | ||||||
|  | #  if PNG_DEFAULT_READ_MACROS | ||||||
|  | #    define PNG_USE_READ_MACROS | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* COMPILER SPECIFIC OPTIONS.
 | ||||||
|  |  * | ||||||
|  |  * These options are provided so that a variety of difficult compilers | ||||||
|  |  * can be used.  Some are fixed at build time (e.g. PNG_API_RULE | ||||||
|  |  * below) but still have compiler specific implementations, others | ||||||
|  |  * may be changed on a per-file basis when compiling against libpng. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect
 | ||||||
|  |  * against legacy (pre ISOC90) compilers that did not understand function | ||||||
|  |  * prototypes.  It is not required for modern C compilers. | ||||||
|  |  */ | ||||||
|  | #ifndef PNGARG | ||||||
|  | #  define PNGARG(arglist) arglist | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Function calling conventions.
 | ||||||
|  |  * ============================= | ||||||
|  |  * Normally it is not necessary to specify to the compiler how to call | ||||||
|  |  * a function - it just does it - however on x86 systems derived from | ||||||
|  |  * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems | ||||||
|  |  * and some others) there are multiple ways to call a function and the | ||||||
|  |  * default can be changed on the compiler command line.  For this reason | ||||||
|  |  * libpng specifies the calling convention of every exported function and | ||||||
|  |  * every function called via a user supplied function pointer.  This is | ||||||
|  |  * done in this file by defining the following macros: | ||||||
|  |  * | ||||||
|  |  * PNGAPI    Calling convention for exported functions. | ||||||
|  |  * PNGCBAPI  Calling convention for user provided (callback) functions. | ||||||
|  |  * PNGCAPI   Calling convention used by the ANSI-C library (required | ||||||
|  |  *           for longjmp callbacks and sometimes used internally to | ||||||
|  |  *           specify the calling convention for zlib). | ||||||
|  |  * | ||||||
|  |  * These macros should never be overridden.  If it is necessary to | ||||||
|  |  * change calling convention in a private build this can be done | ||||||
|  |  * by setting PNG_API_RULE (which defaults to 0) to one of the values | ||||||
|  |  * below to select the correct 'API' variants. | ||||||
|  |  * | ||||||
|  |  * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. | ||||||
|  |  *                This is correct in every known environment. | ||||||
|  |  * PNG_API_RULE=1 Use the operating system convention for PNGAPI and | ||||||
|  |  *                the 'C' calling convention (from PNGCAPI) for | ||||||
|  |  *                callbacks (PNGCBAPI).  This is no longer required | ||||||
|  |  *                in any known environment - if it has to be used | ||||||
|  |  *                please post an explanation of the problem to the | ||||||
|  |  *                libpng mailing list. | ||||||
|  |  * | ||||||
|  |  * These cases only differ if the operating system does not use the C | ||||||
|  |  * calling convention, at present this just means the above cases | ||||||
|  |  * (x86 DOS/Windows systems) and, even then, this does not apply to | ||||||
|  |  * Cygwin running on those systems. | ||||||
|  |  * | ||||||
|  |  * Note that the value must be defined in pnglibconf.h so that what | ||||||
|  |  * the application uses to call the library matches the conventions | ||||||
|  |  * set when building the library. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Symbol export
 | ||||||
|  |  * ============= | ||||||
|  |  * When building a shared library it is almost always necessary to tell | ||||||
|  |  * the compiler which symbols to export.  The png.h macro 'PNG_EXPORT' | ||||||
|  |  * is used to mark the symbols.  On some systems these symbols can be | ||||||
|  |  * extracted at link time and need no special processing by the compiler, | ||||||
|  |  * on other systems the symbols are flagged by the compiler and just | ||||||
|  |  * the declaration requires a special tag applied (unfortunately) in a | ||||||
|  |  * compiler dependent way.  Some systems can do either. | ||||||
|  |  * | ||||||
|  |  * A small number of older systems also require a symbol from a DLL to | ||||||
|  |  * be flagged to the program that calls it.  This is a problem because | ||||||
|  |  * we do not know in the header file included by application code that | ||||||
|  |  * the symbol will come from a shared library, as opposed to a statically | ||||||
|  |  * linked one.  For this reason the application must tell us by setting | ||||||
|  |  * the magic flag PNG_USE_DLL to turn on the special processing before | ||||||
|  |  * it includes png.h. | ||||||
|  |  * | ||||||
|  |  * Four additional macros are used to make this happen: | ||||||
|  |  * | ||||||
|  |  * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from | ||||||
|  |  *            the build or imported if PNG_USE_DLL is set - compiler | ||||||
|  |  *            and system specific. | ||||||
|  |  * | ||||||
|  |  * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to | ||||||
|  |  *                       'type', compiler specific. | ||||||
|  |  * | ||||||
|  |  * PNG_DLL_EXPORT Set to the magic to use during a libpng build to | ||||||
|  |  *                make a symbol exported from the DLL.  Not used in the | ||||||
|  |  *                public header files; see pngpriv.h for how it is used | ||||||
|  |  *                in the libpng build. | ||||||
|  |  * | ||||||
|  |  * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come | ||||||
|  |  *                from a DLL - used to define PNG_IMPEXP when | ||||||
|  |  *                PNG_USE_DLL is set. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* System specific discovery.
 | ||||||
|  |  * ========================== | ||||||
|  |  * This code is used at build time to find PNG_IMPEXP, the API settings | ||||||
|  |  * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL | ||||||
|  |  * import processing is possible.  On Windows systems it also sets | ||||||
|  |  * compiler-specific macros to the values required to change the calling | ||||||
|  |  * conventions of the various functions. | ||||||
|  |  */ | ||||||
|  | #if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ | ||||||
|  |     defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | ||||||
|  |   /* Windows system (DOS doesn't support DLLs).  Includes builds under Cygwin or
 | ||||||
|  |    * MinGW on any architecture currently supported by Windows.  Also includes | ||||||
|  |    * Watcom builds but these need special treatment because they are not | ||||||
|  |    * compatible with GCC or Visual C because of different calling conventions. | ||||||
|  |    */ | ||||||
|  | #  if PNG_API_RULE == 2 | ||||||
|  |    /* If this line results in an error, either because __watcall is not
 | ||||||
|  |     * understood or because of a redefine just below you cannot use *this* | ||||||
|  |     * build of the library with the compiler you are using.  *This* build was | ||||||
|  |     * build using Watcom and applications must also be built using Watcom! | ||||||
|  |     */ | ||||||
|  | #    define PNGCAPI __watcall | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) | ||||||
|  | #    define PNGCAPI __cdecl | ||||||
|  | #    if PNG_API_RULE == 1 | ||||||
|  |    /* If this line results in an error __stdcall is not understood and
 | ||||||
|  |     * PNG_API_RULE should not have been set to '1'. | ||||||
|  |     */ | ||||||
|  | #      define PNGAPI __stdcall | ||||||
|  | #    endif | ||||||
|  | #  else | ||||||
|  |    /* An older compiler, or one not detected (erroneously) above,
 | ||||||
|  |     * if necessary override on the command line to get the correct | ||||||
|  |     * variants for the compiler. | ||||||
|  |     */ | ||||||
|  | #    ifndef PNGCAPI | ||||||
|  | #      define PNGCAPI _cdecl | ||||||
|  | #    endif | ||||||
|  | #    if PNG_API_RULE == 1 && !defined(PNGAPI) | ||||||
|  | #      define PNGAPI _stdcall | ||||||
|  | #    endif | ||||||
|  | #  endif /* compiler/api */ | ||||||
|  | 
 | ||||||
|  |   /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ | ||||||
|  | 
 | ||||||
|  | #  if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) | ||||||
|  | #     error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  if (defined(_MSC_VER) && _MSC_VER < 800) ||\ | ||||||
|  |       (defined(__BORLANDC__) && __BORLANDC__ < 0x500) | ||||||
|  |    /* older Borland and MSC
 | ||||||
|  |     * compilers used '__export' and required this to be after | ||||||
|  |     * the type. | ||||||
|  |     */ | ||||||
|  | #    ifndef PNG_EXPORT_TYPE | ||||||
|  | #      define PNG_EXPORT_TYPE(type) type PNG_IMPEXP | ||||||
|  | #    endif | ||||||
|  | #    define PNG_DLL_EXPORT __export | ||||||
|  | #  else /* newer compiler */ | ||||||
|  | #    define PNG_DLL_EXPORT __declspec(dllexport) | ||||||
|  | #    ifndef PNG_DLL_IMPORT | ||||||
|  | #      define PNG_DLL_IMPORT __declspec(dllimport) | ||||||
|  | #    endif | ||||||
|  | #  endif /* compiler */ | ||||||
|  | 
 | ||||||
|  | #else /* !Windows */ | ||||||
|  | #  if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) | ||||||
|  | #    define PNGAPI _System | ||||||
|  | #  else /* !Windows/x86 && !OS/2 */ | ||||||
|  |    /* Use the defaults, or define PNG*API on the command line (but
 | ||||||
|  |     * this will have to be done for every compile!) | ||||||
|  |     */ | ||||||
|  | #  endif /* other system, !OS/2 */ | ||||||
|  | #endif /* !Windows/x86 */ | ||||||
|  | 
 | ||||||
|  | /* Now do all the defaulting . */ | ||||||
|  | #ifndef PNGCAPI | ||||||
|  | #  define PNGCAPI | ||||||
|  | #endif | ||||||
|  | #ifndef PNGCBAPI | ||||||
|  | #  define PNGCBAPI PNGCAPI | ||||||
|  | #endif | ||||||
|  | #ifndef PNGAPI | ||||||
|  | #  define PNGAPI PNGCAPI | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* PNG_IMPEXP may be set on the compilation system command line or (if not set)
 | ||||||
|  |  * then in an internal header file when building the library, otherwise (when | ||||||
|  |  * using the library) it is set here. | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_IMPEXP | ||||||
|  | #  if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) | ||||||
|  |    /* This forces use of a DLL, disallowing static linking */ | ||||||
|  | #    define PNG_IMPEXP PNG_DLL_IMPORT | ||||||
|  | #  endif | ||||||
|  | 
 | ||||||
|  | #  ifndef PNG_IMPEXP | ||||||
|  | #    define PNG_IMPEXP | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat
 | ||||||
|  |  * 'attributes' as a storage class - the attributes go at the start of the | ||||||
|  |  * function definition, and attributes are always appended regardless of the | ||||||
|  |  * compiler.  This considerably simplifies these macros but may cause problems | ||||||
|  |  * if any compilers both need function attributes and fail to handle them as | ||||||
|  |  * a storage class (this is unlikely.) | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_FUNCTION | ||||||
|  | #  define PNG_FUNCTION(type, name, args, attributes) attributes type name args | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_EXPORT_TYPE | ||||||
|  | #  define PNG_EXPORT_TYPE(type) PNG_IMPEXP type | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |    /* The ordinal value is only relevant when preprocessing png.h for symbol
 | ||||||
|  |     * table entries, so we discard it here.  See the .dfn files in the | ||||||
|  |     * scripts directory. | ||||||
|  |     */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_EXPORTA | ||||||
|  | #  define PNG_EXPORTA(ordinal, type, name, args, attributes) \ | ||||||
|  |       PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ | ||||||
|  |       PNG_LINKAGE_API attributes) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument,
 | ||||||
|  |  * so make something non-empty to satisfy the requirement: | ||||||
|  |  */ | ||||||
|  | #define PNG_EMPTY /*empty list*/ | ||||||
|  | 
 | ||||||
|  | #define PNG_EXPORT(ordinal, type, name, args) \ | ||||||
|  |    PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) | ||||||
|  | 
 | ||||||
|  | /* Use PNG_REMOVED to comment out a removed interface. */ | ||||||
|  | #ifndef PNG_REMOVED | ||||||
|  | #  define PNG_REMOVED(ordinal, type, name, args, attributes) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_CALLBACK | ||||||
|  | #  define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Support for compiler specific function attributes.  These are used
 | ||||||
|  |  * so that where compiler support is available incorrect use of API | ||||||
|  |  * functions in png.h will generate compiler warnings. | ||||||
|  |  * | ||||||
|  |  * Added at libpng-1.2.41. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_NO_PEDANTIC_WARNINGS | ||||||
|  | #  ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  | #    define PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED | ||||||
|  |   /* Support for compiler specific function attributes.  These are used
 | ||||||
|  |    * so that where compiler support is available, incorrect use of API | ||||||
|  |    * functions in png.h will generate compiler warnings.  Added at libpng | ||||||
|  |    * version 1.2.41.  Disabling these removes the warnings but may also produce | ||||||
|  |    * less efficient code. | ||||||
|  |    */ | ||||||
|  | #  if defined(__clang__) && defined(__has_attribute) | ||||||
|  |    /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ | ||||||
|  | #    if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) | ||||||
|  | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) | ||||||
|  | #      define PNG_NORETURN __attribute__((__noreturn__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) | ||||||
|  | #      define PNG_ALLOCATED __attribute__((__malloc__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) | ||||||
|  | #      define PNG_DEPRECATED __attribute__((__deprecated__)) | ||||||
|  | #    endif | ||||||
|  | #    if !defined(PNG_PRIVATE) | ||||||
|  | #      ifdef __has_extension | ||||||
|  | #        if __has_extension(attribute_unavailable_with_message) | ||||||
|  | #          define PNG_PRIVATE __attribute__((__unavailable__(\ | ||||||
|  |              "This function is not exported by libpng."))) | ||||||
|  | #        endif | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      define PNG_RESTRICT __restrict | ||||||
|  | #    endif | ||||||
|  | 
 | ||||||
|  | #  elif defined(__GNUC__) | ||||||
|  | #    ifndef PNG_USE_RESULT | ||||||
|  | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_NORETURN | ||||||
|  | #      define PNG_NORETURN   __attribute__((__noreturn__)) | ||||||
|  | #    endif | ||||||
|  | #    if __GNUC__ >= 3 | ||||||
|  | #      ifndef PNG_ALLOCATED | ||||||
|  | #        define PNG_ALLOCATED  __attribute__((__malloc__)) | ||||||
|  | #      endif | ||||||
|  | #      ifndef PNG_DEPRECATED | ||||||
|  | #        define PNG_DEPRECATED __attribute__((__deprecated__)) | ||||||
|  | #      endif | ||||||
|  | #      ifndef PNG_PRIVATE | ||||||
|  | #        if 0 /* Doesn't work so we use deprecated instead*/ | ||||||
|  | #          define PNG_PRIVATE \ | ||||||
|  |             __attribute__((warning("This function is not exported by libpng."))) | ||||||
|  | #        else | ||||||
|  | #          define PNG_PRIVATE \ | ||||||
|  |             __attribute__((__deprecated__)) | ||||||
|  | #        endif | ||||||
|  | #      endif | ||||||
|  | #      if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) | ||||||
|  | #        ifndef PNG_RESTRICT | ||||||
|  | #          define PNG_RESTRICT __restrict | ||||||
|  | #        endif | ||||||
|  | #      endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ | ||||||
|  | #    endif /* __GNUC__ >= 3 */ | ||||||
|  | 
 | ||||||
|  | #  elif defined(_MSC_VER)  && (_MSC_VER >= 1300) | ||||||
|  | #    ifndef PNG_USE_RESULT | ||||||
|  | #      define PNG_USE_RESULT /* not supported */ | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_NORETURN | ||||||
|  | #      define PNG_NORETURN   __declspec(noreturn) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_ALLOCATED | ||||||
|  | #      if (_MSC_VER >= 1400) | ||||||
|  | #        define PNG_ALLOCATED __declspec(restrict) | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_DEPRECATED | ||||||
|  | #      define PNG_DEPRECATED __declspec(deprecated) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_PRIVATE | ||||||
|  | #      define PNG_PRIVATE __declspec(deprecated) | ||||||
|  | #    endif | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      if (_MSC_VER >= 1400) | ||||||
|  | #        define PNG_RESTRICT __restrict | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | 
 | ||||||
|  | #  elif defined(__WATCOMC__) | ||||||
|  | #    ifndef PNG_RESTRICT | ||||||
|  | #      define PNG_RESTRICT __restrict | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif /* PNG_PEDANTIC_WARNINGS */ | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_DEPRECATED | ||||||
|  | #  define PNG_DEPRECATED  /* Use of this function is deprecated */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_USE_RESULT | ||||||
|  | #  define PNG_USE_RESULT  /* The result of this function must be checked */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_NORETURN | ||||||
|  | #  define PNG_NORETURN    /* This function does not return */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_ALLOCATED | ||||||
|  | #  define PNG_ALLOCATED   /* The result of the function is new memory */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_PRIVATE | ||||||
|  | #  define PNG_PRIVATE     /* This is a private libpng function */ | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_RESTRICT | ||||||
|  | #  define PNG_RESTRICT    /* The C99 "restrict" feature */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_FP_EXPORT     /* A floating point API. */ | ||||||
|  | #  ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | #     define PNG_FP_EXPORT(ordinal, type, name, args)\ | ||||||
|  |          PNG_EXPORT(ordinal, type, name, args); | ||||||
|  | #  else                   /* No floating point APIs */ | ||||||
|  | #     define PNG_FP_EXPORT(ordinal, type, name, args) | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | #ifndef PNG_FIXED_EXPORT  /* A fixed point API. */ | ||||||
|  | #  ifdef PNG_FIXED_POINT_SUPPORTED | ||||||
|  | #     define PNG_FIXED_EXPORT(ordinal, type, name, args)\ | ||||||
|  |          PNG_EXPORT(ordinal, type, name, args); | ||||||
|  | #  else                   /* No fixed point APIs */ | ||||||
|  | #     define PNG_FIXED_EXPORT(ordinal, type, name, args) | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef PNG_BUILDING_SYMBOL_TABLE | ||||||
|  | /* Some typedefs to get us started.  These should be safe on most of the common
 | ||||||
|  |  * platforms. | ||||||
|  |  * | ||||||
|  |  * png_uint_32 and png_int_32 may, currently, be larger than required to hold a | ||||||
|  |  * 32-bit value however this is not normally advisable. | ||||||
|  |  * | ||||||
|  |  * png_uint_16 and png_int_16 should always be two bytes in size - this is | ||||||
|  |  * verified at library build time. | ||||||
|  |  * | ||||||
|  |  * png_byte must always be one byte in size. | ||||||
|  |  * | ||||||
|  |  * The checks below use constants from limits.h, as defined by the ISOC90 | ||||||
|  |  * standard. | ||||||
|  |  */ | ||||||
|  | #if CHAR_BIT == 8 && UCHAR_MAX == 255 | ||||||
|  |    typedef unsigned char png_byte; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires 8-bit bytes" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if INT_MIN == -32768 && INT_MAX == 32767 | ||||||
|  |    typedef int png_int_16; | ||||||
|  | #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 | ||||||
|  |    typedef short png_int_16; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires a signed 16-bit type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if UINT_MAX == 65535 | ||||||
|  |    typedef unsigned int png_uint_16; | ||||||
|  | #elif USHRT_MAX == 65535 | ||||||
|  |    typedef unsigned short png_uint_16; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires an unsigned 16-bit type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if INT_MIN < -2147483646 && INT_MAX > 2147483646 | ||||||
|  |    typedef int png_int_32; | ||||||
|  | #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 | ||||||
|  |    typedef long int png_int_32; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires a signed 32-bit (or more) type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if UINT_MAX > 4294967294U | ||||||
|  |    typedef unsigned int png_uint_32; | ||||||
|  | #elif ULONG_MAX > 4294967294U | ||||||
|  |    typedef unsigned long int png_uint_32; | ||||||
|  | #else | ||||||
|  | #  error "libpng requires an unsigned 32-bit (or more) type" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t.
 | ||||||
|  |  * From 1.6.0 onwards, an ISO C90 compiler, as well as a standard-compliant | ||||||
|  |  * behavior of sizeof and ptrdiff_t are required. | ||||||
|  |  * The legacy typedefs are provided here for backwards compatibility. | ||||||
|  |  */ | ||||||
|  | typedef size_t png_size_t; | ||||||
|  | typedef ptrdiff_t png_ptrdiff_t; | ||||||
|  | 
 | ||||||
|  | /* libpng needs to know the maximum value of 'size_t' and this controls the
 | ||||||
|  |  * definition of png_alloc_size_t, below.  This maximum value of size_t limits | ||||||
|  |  * but does not control the maximum allocations the library makes - there is | ||||||
|  |  * direct application control of this through png_set_user_limits(). | ||||||
|  |  */ | ||||||
|  | #ifndef PNG_SMALL_SIZE_T | ||||||
|  |    /* Compiler specific tests for systems where size_t is known to be less than
 | ||||||
|  |     * 32 bits (some of these systems may no longer work because of the lack of | ||||||
|  |     * 'far' support; see above.) | ||||||
|  |     */ | ||||||
|  | #  if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ | ||||||
|  |    (defined(_MSC_VER) && defined(MAXSEG_64K)) | ||||||
|  | #     define PNG_SMALL_SIZE_T | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* png_alloc_size_t is guaranteed to be no smaller than size_t, and no smaller
 | ||||||
|  |  * than png_uint_32.  Casts from size_t or png_uint_32 to png_alloc_size_t are | ||||||
|  |  * not necessary; in fact, it is recommended not to use them at all, so that | ||||||
|  |  * the compiler can complain when something turns out to be problematic. | ||||||
|  |  * | ||||||
|  |  * Casts in the other direction (from png_alloc_size_t to size_t or | ||||||
|  |  * png_uint_32) should be explicitly applied; however, we do not expect to | ||||||
|  |  * encounter practical situations that require such conversions. | ||||||
|  |  * | ||||||
|  |  * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than | ||||||
|  |  * 4294967295 - i.e. less than the maximum value of png_uint_32. | ||||||
|  |  */ | ||||||
|  | #ifdef PNG_SMALL_SIZE_T | ||||||
|  |    typedef png_uint_32 png_alloc_size_t; | ||||||
|  | #else | ||||||
|  |    typedef size_t png_alloc_size_t; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler
 | ||||||
|  |  * implementations of Intel CPU specific support of user-mode segmented address | ||||||
|  |  * spaces, where 16-bit pointers address more than 65536 bytes of memory using | ||||||
|  |  * separate 'segment' registers.  The implementation requires two different | ||||||
|  |  * types of pointer (only one of which includes the segment value.) | ||||||
|  |  * | ||||||
|  |  * If required this support is available in version 1.2 of libpng and may be | ||||||
|  |  * available in versions through 1.5, although the correctness of the code has | ||||||
|  |  * not been verified recently. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Typedef for floating-point numbers that are converted to fixed-point with a
 | ||||||
|  |  * multiple of 100,000, e.g., gamma | ||||||
|  |  */ | ||||||
|  | typedef png_int_32 png_fixed_point; | ||||||
|  | 
 | ||||||
|  | /* Add typedefs for pointers */ | ||||||
|  | typedef void                  * png_voidp; | ||||||
|  | typedef const void            * png_const_voidp; | ||||||
|  | typedef png_byte              * png_bytep; | ||||||
|  | typedef const png_byte        * png_const_bytep; | ||||||
|  | typedef png_uint_32           * png_uint_32p; | ||||||
|  | typedef const png_uint_32     * png_const_uint_32p; | ||||||
|  | typedef png_int_32            * png_int_32p; | ||||||
|  | typedef const png_int_32      * png_const_int_32p; | ||||||
|  | typedef png_uint_16           * png_uint_16p; | ||||||
|  | typedef const png_uint_16     * png_const_uint_16p; | ||||||
|  | typedef png_int_16            * png_int_16p; | ||||||
|  | typedef const png_int_16      * png_const_int_16p; | ||||||
|  | typedef char                  * png_charp; | ||||||
|  | typedef const char            * png_const_charp; | ||||||
|  | typedef png_fixed_point       * png_fixed_point_p; | ||||||
|  | typedef const png_fixed_point * png_const_fixed_point_p; | ||||||
|  | typedef size_t                * png_size_tp; | ||||||
|  | typedef const size_t          * png_const_size_tp; | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_STDIO_SUPPORTED | ||||||
|  | typedef FILE            * png_FILE_p; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | typedef double       * png_doublep; | ||||||
|  | typedef const double * png_const_doublep; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Pointers to pointers; i.e. arrays */ | ||||||
|  | typedef png_byte        * * png_bytepp; | ||||||
|  | typedef png_uint_32     * * png_uint_32pp; | ||||||
|  | typedef png_int_32      * * png_int_32pp; | ||||||
|  | typedef png_uint_16     * * png_uint_16pp; | ||||||
|  | typedef png_int_16      * * png_int_16pp; | ||||||
|  | typedef const char      * * png_const_charpp; | ||||||
|  | typedef char            * * png_charpp; | ||||||
|  | typedef png_fixed_point * * png_fixed_point_pp; | ||||||
|  | #ifdef PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | typedef double          * * png_doublepp; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Pointers to pointers to pointers; i.e., pointer to array */ | ||||||
|  | typedef char            * * * png_charppp; | ||||||
|  | 
 | ||||||
|  | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | ||||||
|  | 
 | ||||||
|  | #endif /* PNGCONF_H */ | ||||||
							
								
								
									
										219
									
								
								libs/platform/RK1808/libpng/include/pnglibconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								libs/platform/RK1808/libpng/include/pnglibconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,219 @@ | |||||||
|  | /* pnglibconf.h - library build configuration */ | ||||||
|  | 
 | ||||||
|  | /* libpng version 1.6.37 */ | ||||||
|  | 
 | ||||||
|  | /* Copyright (c) 2018-2019 Cosmin Truta */ | ||||||
|  | /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ | ||||||
|  | 
 | ||||||
|  | /* This code is released under the libpng license. */ | ||||||
|  | /* For conditions of distribution and use, see the disclaimer */ | ||||||
|  | /* and license in png.h */ | ||||||
|  | 
 | ||||||
|  | /* pnglibconf.h */ | ||||||
|  | /* Machine generated file: DO NOT EDIT */ | ||||||
|  | /* Derived from: scripts/pnglibconf.dfa */ | ||||||
|  | #ifndef PNGLCONF_H | ||||||
|  | #define PNGLCONF_H | ||||||
|  | /* options */ | ||||||
|  | #define PNG_16BIT_SUPPORTED | ||||||
|  | #define PNG_ALIGNED_MEMORY_SUPPORTED | ||||||
|  | /*#undef PNG_ARM_NEON_API_SUPPORTED*/ | ||||||
|  | /*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ | ||||||
|  | #define PNG_BENIGN_ERRORS_SUPPORTED | ||||||
|  | #define PNG_BENIGN_READ_ERRORS_SUPPORTED | ||||||
|  | /*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ | ||||||
|  | #define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED | ||||||
|  | #define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_COLORSPACE_SUPPORTED | ||||||
|  | #define PNG_CONSOLE_IO_SUPPORTED | ||||||
|  | #define PNG_CONVERT_tIME_SUPPORTED | ||||||
|  | #define PNG_EASY_ACCESS_SUPPORTED | ||||||
|  | /*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ | ||||||
|  | #define PNG_ERROR_TEXT_SUPPORTED | ||||||
|  | #define PNG_FIXED_POINT_SUPPORTED | ||||||
|  | #define PNG_FLOATING_ARITHMETIC_SUPPORTED | ||||||
|  | #define PNG_FLOATING_POINT_SUPPORTED | ||||||
|  | #define PNG_FORMAT_AFIRST_SUPPORTED | ||||||
|  | #define PNG_FORMAT_BGR_SUPPORTED | ||||||
|  | #define PNG_GAMMA_SUPPORTED | ||||||
|  | #define PNG_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_HANDLE_AS_UNKNOWN_SUPPORTED | ||||||
|  | #define PNG_INCH_CONVERSIONS_SUPPORTED | ||||||
|  | #define PNG_INFO_IMAGE_SUPPORTED | ||||||
|  | #define PNG_IO_STATE_SUPPORTED | ||||||
|  | #define PNG_MNG_FEATURES_SUPPORTED | ||||||
|  | #define PNG_POINTER_INDEXING_SUPPORTED | ||||||
|  | /*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ | ||||||
|  | /*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ | ||||||
|  | #define PNG_PROGRESSIVE_READ_SUPPORTED | ||||||
|  | #define PNG_READ_16BIT_SUPPORTED | ||||||
|  | #define PNG_READ_ALPHA_MODE_SUPPORTED | ||||||
|  | #define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_BACKGROUND_SUPPORTED | ||||||
|  | #define PNG_READ_BGR_SUPPORTED | ||||||
|  | #define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_READ_COMPOSITE_NODIV_SUPPORTED | ||||||
|  | #define PNG_READ_COMPRESSED_TEXT_SUPPORTED | ||||||
|  | #define PNG_READ_EXPAND_16_SUPPORTED | ||||||
|  | #define PNG_READ_EXPAND_SUPPORTED | ||||||
|  | #define PNG_READ_FILLER_SUPPORTED | ||||||
|  | #define PNG_READ_GAMMA_SUPPORTED | ||||||
|  | #define PNG_READ_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_READ_GRAY_TO_RGB_SUPPORTED | ||||||
|  | #define PNG_READ_INTERLACING_SUPPORTED | ||||||
|  | #define PNG_READ_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #define PNG_READ_INVERT_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_INVERT_SUPPORTED | ||||||
|  | #define PNG_READ_OPT_PLTE_SUPPORTED | ||||||
|  | #define PNG_READ_PACKSWAP_SUPPORTED | ||||||
|  | #define PNG_READ_PACK_SUPPORTED | ||||||
|  | #define PNG_READ_QUANTIZE_SUPPORTED | ||||||
|  | #define PNG_READ_RGB_TO_GRAY_SUPPORTED | ||||||
|  | #define PNG_READ_SCALE_16_TO_8_SUPPORTED | ||||||
|  | #define PNG_READ_SHIFT_SUPPORTED | ||||||
|  | #define PNG_READ_STRIP_16_TO_8_SUPPORTED | ||||||
|  | #define PNG_READ_STRIP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_SUPPORTED | ||||||
|  | #define PNG_READ_SWAP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_READ_SWAP_SUPPORTED | ||||||
|  | #define PNG_READ_TEXT_SUPPORTED | ||||||
|  | #define PNG_READ_TRANSFORMS_SUPPORTED | ||||||
|  | #define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_USER_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_READ_USER_TRANSFORM_SUPPORTED | ||||||
|  | #define PNG_READ_bKGD_SUPPORTED | ||||||
|  | #define PNG_READ_cHRM_SUPPORTED | ||||||
|  | #define PNG_READ_eXIf_SUPPORTED | ||||||
|  | #define PNG_READ_gAMA_SUPPORTED | ||||||
|  | #define PNG_READ_hIST_SUPPORTED | ||||||
|  | #define PNG_READ_iCCP_SUPPORTED | ||||||
|  | #define PNG_READ_iTXt_SUPPORTED | ||||||
|  | #define PNG_READ_oFFs_SUPPORTED | ||||||
|  | #define PNG_READ_pCAL_SUPPORTED | ||||||
|  | #define PNG_READ_pHYs_SUPPORTED | ||||||
|  | #define PNG_READ_sBIT_SUPPORTED | ||||||
|  | #define PNG_READ_sCAL_SUPPORTED | ||||||
|  | #define PNG_READ_sPLT_SUPPORTED | ||||||
|  | #define PNG_READ_sRGB_SUPPORTED | ||||||
|  | #define PNG_READ_tEXt_SUPPORTED | ||||||
|  | #define PNG_READ_tIME_SUPPORTED | ||||||
|  | #define PNG_READ_tRNS_SUPPORTED | ||||||
|  | #define PNG_READ_zTXt_SUPPORTED | ||||||
|  | #define PNG_SAVE_INT_32_SUPPORTED | ||||||
|  | #define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_SEQUENTIAL_READ_SUPPORTED | ||||||
|  | #define PNG_SETJMP_SUPPORTED | ||||||
|  | #define PNG_SET_OPTION_SUPPORTED | ||||||
|  | #define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_SET_USER_LIMITS_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_BGR_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_READ_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED | ||||||
|  | #define PNG_SIMPLIFIED_WRITE_SUPPORTED | ||||||
|  | #define PNG_STDIO_SUPPORTED | ||||||
|  | #define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_TEXT_SUPPORTED | ||||||
|  | #define PNG_TIME_RFC1123_SUPPORTED | ||||||
|  | #define PNG_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_USER_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_USER_LIMITS_SUPPORTED | ||||||
|  | #define PNG_USER_MEM_SUPPORTED | ||||||
|  | #define PNG_USER_TRANSFORM_INFO_SUPPORTED | ||||||
|  | #define PNG_USER_TRANSFORM_PTR_SUPPORTED | ||||||
|  | #define PNG_WARNINGS_SUPPORTED | ||||||
|  | #define PNG_WRITE_16BIT_SUPPORTED | ||||||
|  | #define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_WRITE_BGR_SUPPORTED | ||||||
|  | #define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED | ||||||
|  | #define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED | ||||||
|  | #define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED | ||||||
|  | #define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED | ||||||
|  | #define PNG_WRITE_FILLER_SUPPORTED | ||||||
|  | #define PNG_WRITE_FILTER_SUPPORTED | ||||||
|  | #define PNG_WRITE_FLUSH_SUPPORTED | ||||||
|  | #define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED | ||||||
|  | #define PNG_WRITE_INTERLACING_SUPPORTED | ||||||
|  | #define PNG_WRITE_INT_FUNCTIONS_SUPPORTED | ||||||
|  | #define PNG_WRITE_INVERT_ALPHA_SUPPORTED | ||||||
|  | #define PNG_WRITE_INVERT_SUPPORTED | ||||||
|  | #define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED | ||||||
|  | #define PNG_WRITE_PACKSWAP_SUPPORTED | ||||||
|  | #define PNG_WRITE_PACK_SUPPORTED | ||||||
|  | #define PNG_WRITE_SHIFT_SUPPORTED | ||||||
|  | #define PNG_WRITE_SUPPORTED | ||||||
|  | #define PNG_WRITE_SWAP_ALPHA_SUPPORTED | ||||||
|  | #define PNG_WRITE_SWAP_SUPPORTED | ||||||
|  | #define PNG_WRITE_TEXT_SUPPORTED | ||||||
|  | #define PNG_WRITE_TRANSFORMS_SUPPORTED | ||||||
|  | #define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED | ||||||
|  | #define PNG_WRITE_USER_TRANSFORM_SUPPORTED | ||||||
|  | #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED | ||||||
|  | #define PNG_WRITE_bKGD_SUPPORTED | ||||||
|  | #define PNG_WRITE_cHRM_SUPPORTED | ||||||
|  | #define PNG_WRITE_eXIf_SUPPORTED | ||||||
|  | #define PNG_WRITE_gAMA_SUPPORTED | ||||||
|  | #define PNG_WRITE_hIST_SUPPORTED | ||||||
|  | #define PNG_WRITE_iCCP_SUPPORTED | ||||||
|  | #define PNG_WRITE_iTXt_SUPPORTED | ||||||
|  | #define PNG_WRITE_oFFs_SUPPORTED | ||||||
|  | #define PNG_WRITE_pCAL_SUPPORTED | ||||||
|  | #define PNG_WRITE_pHYs_SUPPORTED | ||||||
|  | #define PNG_WRITE_sBIT_SUPPORTED | ||||||
|  | #define PNG_WRITE_sCAL_SUPPORTED | ||||||
|  | #define PNG_WRITE_sPLT_SUPPORTED | ||||||
|  | #define PNG_WRITE_sRGB_SUPPORTED | ||||||
|  | #define PNG_WRITE_tEXt_SUPPORTED | ||||||
|  | #define PNG_WRITE_tIME_SUPPORTED | ||||||
|  | #define PNG_WRITE_tRNS_SUPPORTED | ||||||
|  | #define PNG_WRITE_zTXt_SUPPORTED | ||||||
|  | #define PNG_bKGD_SUPPORTED | ||||||
|  | #define PNG_cHRM_SUPPORTED | ||||||
|  | #define PNG_eXIf_SUPPORTED | ||||||
|  | #define PNG_gAMA_SUPPORTED | ||||||
|  | #define PNG_hIST_SUPPORTED | ||||||
|  | #define PNG_iCCP_SUPPORTED | ||||||
|  | #define PNG_iTXt_SUPPORTED | ||||||
|  | #define PNG_oFFs_SUPPORTED | ||||||
|  | #define PNG_pCAL_SUPPORTED | ||||||
|  | #define PNG_pHYs_SUPPORTED | ||||||
|  | #define PNG_sBIT_SUPPORTED | ||||||
|  | #define PNG_sCAL_SUPPORTED | ||||||
|  | #define PNG_sPLT_SUPPORTED | ||||||
|  | #define PNG_sRGB_SUPPORTED | ||||||
|  | #define PNG_tEXt_SUPPORTED | ||||||
|  | #define PNG_tIME_SUPPORTED | ||||||
|  | #define PNG_tRNS_SUPPORTED | ||||||
|  | #define PNG_zTXt_SUPPORTED | ||||||
|  | /* end of options */ | ||||||
|  | /* settings */ | ||||||
|  | #define PNG_API_RULE 0 | ||||||
|  | #define PNG_DEFAULT_READ_MACROS 1 | ||||||
|  | #define PNG_GAMMA_THRESHOLD_FIXED 5000 | ||||||
|  | #define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE | ||||||
|  | #define PNG_INFLATE_BUF_SIZE 1024 | ||||||
|  | #define PNG_LINKAGE_API extern | ||||||
|  | #define PNG_LINKAGE_CALLBACK extern | ||||||
|  | #define PNG_LINKAGE_DATA extern | ||||||
|  | #define PNG_LINKAGE_FUNCTION extern | ||||||
|  | #define PNG_MAX_GAMMA_8 11 | ||||||
|  | #define PNG_QUANTIZE_BLUE_BITS 5 | ||||||
|  | #define PNG_QUANTIZE_GREEN_BITS 5 | ||||||
|  | #define PNG_QUANTIZE_RED_BITS 5 | ||||||
|  | #define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) | ||||||
|  | #define PNG_TEXT_Z_DEFAULT_STRATEGY 0 | ||||||
|  | #define PNG_USER_CHUNK_CACHE_MAX 1000 | ||||||
|  | #define PNG_USER_CHUNK_MALLOC_MAX 8000000 | ||||||
|  | #define PNG_USER_HEIGHT_MAX 1000000 | ||||||
|  | #define PNG_USER_WIDTH_MAX 1000000 | ||||||
|  | #define PNG_ZBUF_SIZE 8192 | ||||||
|  | #define PNG_ZLIB_VERNUM 0x12b0 | ||||||
|  | #define PNG_Z_DEFAULT_COMPRESSION (-1) | ||||||
|  | #define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 | ||||||
|  | #define PNG_Z_DEFAULT_STRATEGY 1 | ||||||
|  | #define PNG_sCAL_PRECISION 5 | ||||||
|  | #define PNG_sRGB_PROFILE_CHECKS 2 | ||||||
|  | /* end of settings */ | ||||||
|  | #endif /* PNGLCONF_H */ | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.la
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.la
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | # libpng16.la - a libtool library file | ||||||
|  | # Generated by libtool (GNU libtool) 2.4.6 | ||||||
|  | # | ||||||
|  | # Please DO NOT delete this file! | ||||||
|  | # It is necessary for linking the library. | ||||||
|  | 
 | ||||||
|  | # The name that we can dlopen(3). | ||||||
|  | dlname='libpng16.so.16' | ||||||
|  | 
 | ||||||
|  | # Names of this library. | ||||||
|  | library_names='libpng16.so.16.37.0 libpng16.so.16 libpng16.so' | ||||||
|  | 
 | ||||||
|  | # The name of the static archive. | ||||||
|  | old_library='libpng16.a' | ||||||
|  | 
 | ||||||
|  | # Linker flags that cannot go in dependency_libs. | ||||||
|  | inherited_linker_flags='' | ||||||
|  | 
 | ||||||
|  | # Libraries that this one depends upon. | ||||||
|  | dependency_libs=' -L/home/xz/Documents/testing/compile_test/lpng1637/zlib/rk1808/lib/ -lz -lm' | ||||||
|  | 
 | ||||||
|  | # Names of additional weak libraries provided by this library | ||||||
|  | weak_library_names='' | ||||||
|  | 
 | ||||||
|  | # Version information for libpng16. | ||||||
|  | current=53 | ||||||
|  | age=37 | ||||||
|  | revision=0 | ||||||
|  | 
 | ||||||
|  | # Is this an already installed library? | ||||||
|  | installed=yes | ||||||
|  | 
 | ||||||
|  | # Should we warn about portability when linking against -modules? | ||||||
|  | shouldnotlink=no | ||||||
|  | 
 | ||||||
|  | # Files to dlopen/dlpreopen | ||||||
|  | dlopen='' | ||||||
|  | dlpreopen='' | ||||||
|  | 
 | ||||||
|  | # Directory that this library needs to be installed in: | ||||||
|  | libdir='//home/xz/Documents/testing/compile_test/lpng1637/rk1808/lib' | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.la
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.la
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | # libpng16.la - a libtool library file | ||||||
|  | # Generated by libtool (GNU libtool) 2.4.6 | ||||||
|  | # | ||||||
|  | # Please DO NOT delete this file! | ||||||
|  | # It is necessary for linking the library. | ||||||
|  | 
 | ||||||
|  | # The name that we can dlopen(3). | ||||||
|  | dlname='libpng16.so.16' | ||||||
|  | 
 | ||||||
|  | # Names of this library. | ||||||
|  | library_names='libpng16.so.16.37.0 libpng16.so.16 libpng16.so' | ||||||
|  | 
 | ||||||
|  | # The name of the static archive. | ||||||
|  | old_library='libpng16.a' | ||||||
|  | 
 | ||||||
|  | # Linker flags that cannot go in dependency_libs. | ||||||
|  | inherited_linker_flags='' | ||||||
|  | 
 | ||||||
|  | # Libraries that this one depends upon. | ||||||
|  | dependency_libs=' -L/home/xz/Documents/testing/compile_test/lpng1637/zlib/rk1808/lib/ -lz -lm' | ||||||
|  | 
 | ||||||
|  | # Names of additional weak libraries provided by this library | ||||||
|  | weak_library_names='' | ||||||
|  | 
 | ||||||
|  | # Version information for libpng16. | ||||||
|  | current=53 | ||||||
|  | age=37 | ||||||
|  | revision=0 | ||||||
|  | 
 | ||||||
|  | # Is this an already installed library? | ||||||
|  | installed=yes | ||||||
|  | 
 | ||||||
|  | # Should we warn about portability when linking against -modules? | ||||||
|  | shouldnotlink=no | ||||||
|  | 
 | ||||||
|  | # Files to dlopen/dlpreopen | ||||||
|  | dlopen='' | ||||||
|  | dlpreopen='' | ||||||
|  | 
 | ||||||
|  | # Directory that this library needs to be installed in: | ||||||
|  | libdir='//home/xz/Documents/testing/compile_test/lpng1637/rk1808/lib' | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so.16
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so.16
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so.16.37.0
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/libpng/lib/Linux/libpng16.so.16.37.0
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										12
									
								
								libs/platform/RK1808/libpng/lib/Linux/pkgconfig/libpng.pc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								libs/platform/RK1808/libpng/lib/Linux/pkgconfig/libpng.pc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | prefix=//home/xz/Documents/testing/compile_test/lpng1637/rk1808 | ||||||
|  | exec_prefix=${prefix} | ||||||
|  | libdir=${exec_prefix}/lib | ||||||
|  | includedir=${prefix}/include/libpng16 | ||||||
|  | 
 | ||||||
|  | Name: libpng | ||||||
|  | Description: Loads and saves PNG files | ||||||
|  | Version: 1.6.37 | ||||||
|  | Requires: zlib | ||||||
|  | Libs: -L${libdir} -lpng16 | ||||||
|  | Libs.private: -lm -lz -lm  | ||||||
|  | Cflags: -I${includedir} | ||||||
							
								
								
									
										12
									
								
								libs/platform/RK1808/libpng/lib/Linux/pkgconfig/libpng16.pc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								libs/platform/RK1808/libpng/lib/Linux/pkgconfig/libpng16.pc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | prefix=//home/xz/Documents/testing/compile_test/lpng1637/rk1808 | ||||||
|  | exec_prefix=${prefix} | ||||||
|  | libdir=${exec_prefix}/lib | ||||||
|  | includedir=${prefix}/include/libpng16 | ||||||
|  | 
 | ||||||
|  | Name: libpng | ||||||
|  | Description: Loads and saves PNG files | ||||||
|  | Version: 1.6.37 | ||||||
|  | Requires: zlib | ||||||
|  | Libs: -L${libdir} -lpng16 | ||||||
|  | Libs.private: -lm -lz -lm  | ||||||
|  | Cflags: -I${includedir} | ||||||
							
								
								
									
										6052
									
								
								libs/platform/RK1808/libpng/share/man/man3/libpng.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6052
									
								
								libs/platform/RK1808/libpng/share/man/man3/libpng.3
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								libs/platform/RK1808/libpng/share/man/man3/libpngpf.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								libs/platform/RK1808/libpng/share/man/man3/libpngpf.3
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | .TH LIBPNGPF 3 "April 14, 2019" | ||||||
|  | .SH NAME | ||||||
|  | libpng \- Portable Network Graphics (PNG) Reference Library 1.6.37 | ||||||
|  | (private functions) | ||||||
|  | 
 | ||||||
|  | .SH SYNOPSIS | ||||||
|  | \fB#include \fI"pngpriv.h" | ||||||
|  | 
 | ||||||
|  | \fBAs of libpng version \fP\fI1.5.1\fP\fB, this section is no longer | ||||||
|  | \fP\fImaintained\fP\fB, now that the private function prototypes are hidden in | ||||||
|  | \fP\fIpngpriv.h\fP\fB and not accessible to applications. Look in | ||||||
|  | \fP\fIpngpriv.h\fP\fB for the prototypes and a short description of each | ||||||
|  | function. | ||||||
|  | 
 | ||||||
|  | .SH DESCRIPTION | ||||||
|  | The functions previously listed here are used privately by libpng and are not | ||||||
|  | available for use by applications.  They are not "exported" to applications | ||||||
|  | using shared libraries. | ||||||
|  | 
 | ||||||
|  | .SH "SEE ALSO" | ||||||
|  | .BR "png"(5), " libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5) | ||||||
|  | 
 | ||||||
|  | .SH AUTHORS | ||||||
|  | Cosmin Truta, Glenn Randers-Pehrson | ||||||
							
								
								
									
										84
									
								
								libs/platform/RK1808/libpng/share/man/man5/png.5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								libs/platform/RK1808/libpng/share/man/man5/png.5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,84 @@ | |||||||
|  | .TH PNG 5 "April 14, 2019" | ||||||
|  | .SH NAME | ||||||
|  | png \- Portable Network Graphics (PNG) format | ||||||
|  | 
 | ||||||
|  | .SH DESCRIPTION | ||||||
|  | PNG (Portable Network Graphics) is an extensible file format for the | ||||||
|  | lossless, portable, well-compressed storage of raster images.  PNG | ||||||
|  | provides a patent-free replacement for GIF, and can also replace many | ||||||
|  | common uses of TIFF. Indexed-color, grayscale, and truecolor images are | ||||||
|  | supported, plus an optional alpha channel.  Sample depths range from | ||||||
|  | 1 to 16 bits. | ||||||
|  | .br | ||||||
|  | PNG is designed to work well in online viewing applications, such | ||||||
|  | as the World Wide Web, so it is fully streamable with a progressive | ||||||
|  | display option.  PNG is robust, providing both full file integrity | ||||||
|  | checking and fast, simple detection of common transmission errors. | ||||||
|  | Also, PNG can store gamma and chromaticity data for improved color | ||||||
|  | matching on heterogeneous platforms. | ||||||
|  | 
 | ||||||
|  | .SH "SEE ALSO" | ||||||
|  | .BR "libpng"(3), " libpngpf"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5) | ||||||
|  | .LP | ||||||
|  | PNG Specification (Second Edition), November 2003: | ||||||
|  | .IP | ||||||
|  | .br | ||||||
|  | https://www.w3.org/TR/2003/REC-PNG-20031110/ | ||||||
|  | .LP | ||||||
|  | PNG 1.2 Specification, July 1999: | ||||||
|  | .IP | ||||||
|  | .br | ||||||
|  | https://png-mng.sourceforge.io/pub/png/spec/1.2/ | ||||||
|  | .LP | ||||||
|  | PNG 1.0 Specification, October 1996: | ||||||
|  | .IP | ||||||
|  | .br | ||||||
|  | RFC 2083 | ||||||
|  | .br | ||||||
|  | https://www.ietf.org/rfc/rfc2083.txt | ||||||
|  | .IP | ||||||
|  | .br | ||||||
|  | or W3C Recommendation | ||||||
|  | .br | ||||||
|  | https://www.w3.org/TR/REC-png-961001 | ||||||
|  | 
 | ||||||
|  | .SH AUTHORS | ||||||
|  | This man page: Cosmin Truta, Glenn Randers-Pehrson | ||||||
|  | .LP | ||||||
|  | Portable Network Graphics (PNG) Specification (Second Edition) | ||||||
|  | Information technology - Computer graphics and image processing - | ||||||
|  | Portable Network Graphics (PNG): Functional specification. | ||||||
|  | ISO/IEC 15948:2003 (E) (November 10, 2003): David Duce and others. | ||||||
|  | .LP | ||||||
|  | Portable Network Graphics (PNG) Specification Version 1.2 (July 8, 1999): | ||||||
|  | Glenn Randers-Pehrson and others (png-list). | ||||||
|  | .LP | ||||||
|  | Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996): | ||||||
|  | Thomas Boutell and others (png-list). | ||||||
|  | 
 | ||||||
|  | .SH COPYRIGHT | ||||||
|  | .LP | ||||||
|  | This man page is | ||||||
|  | .br | ||||||
|  | Copyright (c) 2018-2019 Cosmin Truta. | ||||||
|  | .br | ||||||
|  | Copyright (c) 1998-2006 Glenn Randers-Pehrson. | ||||||
|  | .br | ||||||
|  | See png.h for conditions of use and distribution. | ||||||
|  | .LP | ||||||
|  | The PNG Specification (Second Edition) is | ||||||
|  | .br | ||||||
|  | Copyright (c) 2003 W3C. (MIT, ERCIM, Keio), All Rights Reserved. | ||||||
|  | .LP | ||||||
|  | The PNG-1.2 Specification is | ||||||
|  | .br | ||||||
|  | Copyright (c) 1999 Glenn Randers-Pehrson. | ||||||
|  | .br | ||||||
|  | See the specification for conditions of use and distribution. | ||||||
|  | .LP | ||||||
|  | The PNG-1.0 Specification is | ||||||
|  | .br | ||||||
|  | Copyright (c) 1996 Massachusetts Institute of Technology. | ||||||
|  | .br | ||||||
|  | See the specification for conditions of use and distribution. | ||||||
|  | .\" end of man page | ||||||
							
								
								
									
										534
									
								
								libs/platform/RK1808/zlib/include/zconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										534
									
								
								libs/platform/RK1808/zlib/include/zconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,534 @@ | |||||||
|  | /* zconf.h -- configuration of the zlib compression library
 | ||||||
|  |  * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler | ||||||
|  |  * For conditions of distribution and use, see copyright notice in zlib.h | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* @(#) $Id$ */ | ||||||
|  | 
 | ||||||
|  | #ifndef ZCONF_H | ||||||
|  | #define ZCONF_H | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * If you *really* need a unique prefix for all types and library functions, | ||||||
|  |  * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. | ||||||
|  |  * Even better than compiling with -DZ_PREFIX would be to use configure to set | ||||||
|  |  * this permanently in zconf.h using "./configure --zprefix". | ||||||
|  |  */ | ||||||
|  | #ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */ | ||||||
|  | #  define Z_PREFIX_SET | ||||||
|  | 
 | ||||||
|  | /* all linked symbols and init macros */ | ||||||
|  | #  define _dist_code            z__dist_code | ||||||
|  | #  define _length_code          z__length_code | ||||||
|  | #  define _tr_align             z__tr_align | ||||||
|  | #  define _tr_flush_bits        z__tr_flush_bits | ||||||
|  | #  define _tr_flush_block       z__tr_flush_block | ||||||
|  | #  define _tr_init              z__tr_init | ||||||
|  | #  define _tr_stored_block      z__tr_stored_block | ||||||
|  | #  define _tr_tally             z__tr_tally | ||||||
|  | #  define adler32               z_adler32 | ||||||
|  | #  define adler32_combine       z_adler32_combine | ||||||
|  | #  define adler32_combine64     z_adler32_combine64 | ||||||
|  | #  define adler32_z             z_adler32_z | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    define compress              z_compress | ||||||
|  | #    define compress2             z_compress2 | ||||||
|  | #    define compressBound         z_compressBound | ||||||
|  | #  endif | ||||||
|  | #  define crc32                 z_crc32 | ||||||
|  | #  define crc32_combine         z_crc32_combine | ||||||
|  | #  define crc32_combine64       z_crc32_combine64 | ||||||
|  | #  define crc32_z               z_crc32_z | ||||||
|  | #  define deflate               z_deflate | ||||||
|  | #  define deflateBound          z_deflateBound | ||||||
|  | #  define deflateCopy           z_deflateCopy | ||||||
|  | #  define deflateEnd            z_deflateEnd | ||||||
|  | #  define deflateGetDictionary  z_deflateGetDictionary | ||||||
|  | #  define deflateInit           z_deflateInit | ||||||
|  | #  define deflateInit2          z_deflateInit2 | ||||||
|  | #  define deflateInit2_         z_deflateInit2_ | ||||||
|  | #  define deflateInit_          z_deflateInit_ | ||||||
|  | #  define deflateParams         z_deflateParams | ||||||
|  | #  define deflatePending        z_deflatePending | ||||||
|  | #  define deflatePrime          z_deflatePrime | ||||||
|  | #  define deflateReset          z_deflateReset | ||||||
|  | #  define deflateResetKeep      z_deflateResetKeep | ||||||
|  | #  define deflateSetDictionary  z_deflateSetDictionary | ||||||
|  | #  define deflateSetHeader      z_deflateSetHeader | ||||||
|  | #  define deflateTune           z_deflateTune | ||||||
|  | #  define deflate_copyright     z_deflate_copyright | ||||||
|  | #  define get_crc_table         z_get_crc_table | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    define gz_error              z_gz_error | ||||||
|  | #    define gz_intmax             z_gz_intmax | ||||||
|  | #    define gz_strwinerror        z_gz_strwinerror | ||||||
|  | #    define gzbuffer              z_gzbuffer | ||||||
|  | #    define gzclearerr            z_gzclearerr | ||||||
|  | #    define gzclose               z_gzclose | ||||||
|  | #    define gzclose_r             z_gzclose_r | ||||||
|  | #    define gzclose_w             z_gzclose_w | ||||||
|  | #    define gzdirect              z_gzdirect | ||||||
|  | #    define gzdopen               z_gzdopen | ||||||
|  | #    define gzeof                 z_gzeof | ||||||
|  | #    define gzerror               z_gzerror | ||||||
|  | #    define gzflush               z_gzflush | ||||||
|  | #    define gzfread               z_gzfread | ||||||
|  | #    define gzfwrite              z_gzfwrite | ||||||
|  | #    define gzgetc                z_gzgetc | ||||||
|  | #    define gzgetc_               z_gzgetc_ | ||||||
|  | #    define gzgets                z_gzgets | ||||||
|  | #    define gzoffset              z_gzoffset | ||||||
|  | #    define gzoffset64            z_gzoffset64 | ||||||
|  | #    define gzopen                z_gzopen | ||||||
|  | #    define gzopen64              z_gzopen64 | ||||||
|  | #    ifdef _WIN32 | ||||||
|  | #      define gzopen_w              z_gzopen_w | ||||||
|  | #    endif | ||||||
|  | #    define gzprintf              z_gzprintf | ||||||
|  | #    define gzputc                z_gzputc | ||||||
|  | #    define gzputs                z_gzputs | ||||||
|  | #    define gzread                z_gzread | ||||||
|  | #    define gzrewind              z_gzrewind | ||||||
|  | #    define gzseek                z_gzseek | ||||||
|  | #    define gzseek64              z_gzseek64 | ||||||
|  | #    define gzsetparams           z_gzsetparams | ||||||
|  | #    define gztell                z_gztell | ||||||
|  | #    define gztell64              z_gztell64 | ||||||
|  | #    define gzungetc              z_gzungetc | ||||||
|  | #    define gzvprintf             z_gzvprintf | ||||||
|  | #    define gzwrite               z_gzwrite | ||||||
|  | #  endif | ||||||
|  | #  define inflate               z_inflate | ||||||
|  | #  define inflateBack           z_inflateBack | ||||||
|  | #  define inflateBackEnd        z_inflateBackEnd | ||||||
|  | #  define inflateBackInit       z_inflateBackInit | ||||||
|  | #  define inflateBackInit_      z_inflateBackInit_ | ||||||
|  | #  define inflateCodesUsed      z_inflateCodesUsed | ||||||
|  | #  define inflateCopy           z_inflateCopy | ||||||
|  | #  define inflateEnd            z_inflateEnd | ||||||
|  | #  define inflateGetDictionary  z_inflateGetDictionary | ||||||
|  | #  define inflateGetHeader      z_inflateGetHeader | ||||||
|  | #  define inflateInit           z_inflateInit | ||||||
|  | #  define inflateInit2          z_inflateInit2 | ||||||
|  | #  define inflateInit2_         z_inflateInit2_ | ||||||
|  | #  define inflateInit_          z_inflateInit_ | ||||||
|  | #  define inflateMark           z_inflateMark | ||||||
|  | #  define inflatePrime          z_inflatePrime | ||||||
|  | #  define inflateReset          z_inflateReset | ||||||
|  | #  define inflateReset2         z_inflateReset2 | ||||||
|  | #  define inflateResetKeep      z_inflateResetKeep | ||||||
|  | #  define inflateSetDictionary  z_inflateSetDictionary | ||||||
|  | #  define inflateSync           z_inflateSync | ||||||
|  | #  define inflateSyncPoint      z_inflateSyncPoint | ||||||
|  | #  define inflateUndermine      z_inflateUndermine | ||||||
|  | #  define inflateValidate       z_inflateValidate | ||||||
|  | #  define inflate_copyright     z_inflate_copyright | ||||||
|  | #  define inflate_fast          z_inflate_fast | ||||||
|  | #  define inflate_table         z_inflate_table | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    define uncompress            z_uncompress | ||||||
|  | #    define uncompress2           z_uncompress2 | ||||||
|  | #  endif | ||||||
|  | #  define zError                z_zError | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    define zcalloc               z_zcalloc | ||||||
|  | #    define zcfree                z_zcfree | ||||||
|  | #  endif | ||||||
|  | #  define zlibCompileFlags      z_zlibCompileFlags | ||||||
|  | #  define zlibVersion           z_zlibVersion | ||||||
|  | 
 | ||||||
|  | /* all zlib typedefs in zlib.h and zconf.h */ | ||||||
|  | #  define Byte                  z_Byte | ||||||
|  | #  define Bytef                 z_Bytef | ||||||
|  | #  define alloc_func            z_alloc_func | ||||||
|  | #  define charf                 z_charf | ||||||
|  | #  define free_func             z_free_func | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    define gzFile                z_gzFile | ||||||
|  | #  endif | ||||||
|  | #  define gz_header             z_gz_header | ||||||
|  | #  define gz_headerp            z_gz_headerp | ||||||
|  | #  define in_func               z_in_func | ||||||
|  | #  define intf                  z_intf | ||||||
|  | #  define out_func              z_out_func | ||||||
|  | #  define uInt                  z_uInt | ||||||
|  | #  define uIntf                 z_uIntf | ||||||
|  | #  define uLong                 z_uLong | ||||||
|  | #  define uLongf                z_uLongf | ||||||
|  | #  define voidp                 z_voidp | ||||||
|  | #  define voidpc                z_voidpc | ||||||
|  | #  define voidpf                z_voidpf | ||||||
|  | 
 | ||||||
|  | /* all zlib structs in zlib.h and zconf.h */ | ||||||
|  | #  define gz_header_s           z_gz_header_s | ||||||
|  | #  define internal_state        z_internal_state | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(__MSDOS__) && !defined(MSDOS) | ||||||
|  | #  define MSDOS | ||||||
|  | #endif | ||||||
|  | #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) | ||||||
|  | #  define OS2 | ||||||
|  | #endif | ||||||
|  | #if defined(_WINDOWS) && !defined(WINDOWS) | ||||||
|  | #  define WINDOWS | ||||||
|  | #endif | ||||||
|  | #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) | ||||||
|  | #  ifndef WIN32 | ||||||
|  | #    define WIN32 | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) | ||||||
|  | #  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) | ||||||
|  | #    ifndef SYS16BIT | ||||||
|  | #      define SYS16BIT | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Compile with -DMAXSEG_64K if the alloc function cannot allocate more | ||||||
|  |  * than 64k bytes at a time (needed on systems with 16-bit int). | ||||||
|  |  */ | ||||||
|  | #ifdef SYS16BIT | ||||||
|  | #  define MAXSEG_64K | ||||||
|  | #endif | ||||||
|  | #ifdef MSDOS | ||||||
|  | #  define UNALIGNED_OK | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef __STDC_VERSION__ | ||||||
|  | #  ifndef STDC | ||||||
|  | #    define STDC | ||||||
|  | #  endif | ||||||
|  | #  if __STDC_VERSION__ >= 199901L | ||||||
|  | #    ifndef STDC99 | ||||||
|  | #      define STDC99 | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  | #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  | #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  | #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */ | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef STDC | ||||||
|  | #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | ||||||
|  | #    define const       /* note: need a more gentle solution here */ | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(ZLIB_CONST) && !defined(z_const) | ||||||
|  | #  define z_const const | ||||||
|  | #else | ||||||
|  | #  define z_const | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef Z_SOLO | ||||||
|  |    typedef unsigned long z_size_t; | ||||||
|  | #else | ||||||
|  | #  define z_longlong long long | ||||||
|  | #  if defined(NO_SIZE_T) | ||||||
|  |      typedef unsigned NO_SIZE_T z_size_t; | ||||||
|  | #  elif defined(STDC) | ||||||
|  | #    include <stddef.h> | ||||||
|  |      typedef size_t z_size_t; | ||||||
|  | #  else | ||||||
|  |      typedef unsigned long z_size_t; | ||||||
|  | #  endif | ||||||
|  | #  undef z_longlong | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Maximum value for memLevel in deflateInit2 */ | ||||||
|  | #ifndef MAX_MEM_LEVEL | ||||||
|  | #  ifdef MAXSEG_64K | ||||||
|  | #    define MAX_MEM_LEVEL 8 | ||||||
|  | #  else | ||||||
|  | #    define MAX_MEM_LEVEL 9 | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Maximum value for windowBits in deflateInit2 and inflateInit2.
 | ||||||
|  |  * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files | ||||||
|  |  * created by gzip. (Files created by minigzip can still be extracted by | ||||||
|  |  * gzip.) | ||||||
|  |  */ | ||||||
|  | #ifndef MAX_WBITS | ||||||
|  | #  define MAX_WBITS   15 /* 32K LZ77 window */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* The memory requirements for deflate are (in bytes):
 | ||||||
|  |             (1 << (windowBits+2)) +  (1 << (memLevel+9)) | ||||||
|  |  that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values) | ||||||
|  |  plus a few kilobytes for small objects. For example, if you want to reduce | ||||||
|  |  the default memory requirements from 256K to 128K, compile with | ||||||
|  |      make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" | ||||||
|  |  Of course this will generally degrade compression (there's no free lunch). | ||||||
|  | 
 | ||||||
|  |    The memory requirements for inflate are (in bytes) 1 << windowBits | ||||||
|  |  that is, 32K for windowBits=15 (default value) plus about 7 kilobytes | ||||||
|  |  for small objects. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  |                         /* Type declarations */ | ||||||
|  | 
 | ||||||
|  | #ifndef OF /* function prototypes */ | ||||||
|  | #  ifdef STDC | ||||||
|  | #    define OF(args)  args | ||||||
|  | #  else | ||||||
|  | #    define OF(args)  () | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef Z_ARG /* function prototypes for stdarg */ | ||||||
|  | #  if defined(STDC) || defined(Z_HAVE_STDARG_H) | ||||||
|  | #    define Z_ARG(args)  args | ||||||
|  | #  else | ||||||
|  | #    define Z_ARG(args)  () | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* The following definitions for FAR are needed only for MSDOS mixed
 | ||||||
|  |  * model programming (small or medium model with some far allocations). | ||||||
|  |  * This was tested only with MSC; for other MSDOS compilers you may have | ||||||
|  |  * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model, | ||||||
|  |  * just define FAR to be empty. | ||||||
|  |  */ | ||||||
|  | #ifdef SYS16BIT | ||||||
|  | #  if defined(M_I86SM) || defined(M_I86MM) | ||||||
|  |      /* MSC small or medium model */ | ||||||
|  | #    define SMALL_MEDIUM | ||||||
|  | #    ifdef _MSC_VER | ||||||
|  | #      define FAR _far | ||||||
|  | #    else | ||||||
|  | #      define FAR far | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #  if (defined(__SMALL__) || defined(__MEDIUM__)) | ||||||
|  |      /* Turbo C small or medium model */ | ||||||
|  | #    define SMALL_MEDIUM | ||||||
|  | #    ifdef __BORLANDC__ | ||||||
|  | #      define FAR _far | ||||||
|  | #    else | ||||||
|  | #      define FAR far | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(WINDOWS) || defined(WIN32) | ||||||
|  |    /* If building or using zlib as a DLL, define ZLIB_DLL.
 | ||||||
|  |     * This is not mandatory, but it offers a little performance increase. | ||||||
|  |     */ | ||||||
|  | #  ifdef ZLIB_DLL | ||||||
|  | #    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) | ||||||
|  | #      ifdef ZLIB_INTERNAL | ||||||
|  | #        define ZEXTERN extern __declspec(dllexport) | ||||||
|  | #      else | ||||||
|  | #        define ZEXTERN extern __declspec(dllimport) | ||||||
|  | #      endif | ||||||
|  | #    endif | ||||||
|  | #  endif  /* ZLIB_DLL */ | ||||||
|  |    /* If building or using zlib with the WINAPI/WINAPIV calling convention,
 | ||||||
|  |     * define ZLIB_WINAPI. | ||||||
|  |     * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. | ||||||
|  |     */ | ||||||
|  | #  ifdef ZLIB_WINAPI | ||||||
|  | #    ifdef FAR | ||||||
|  | #      undef FAR | ||||||
|  | #    endif | ||||||
|  | #    include <windows.h> | ||||||
|  |      /* No need for _export, use ZLIB.DEF instead. */ | ||||||
|  |      /* For complete Windows compatibility, use WINAPI, not __stdcall. */ | ||||||
|  | #    define ZEXPORT WINAPI | ||||||
|  | #    ifdef WIN32 | ||||||
|  | #      define ZEXPORTVA WINAPIV | ||||||
|  | #    else | ||||||
|  | #      define ZEXPORTVA FAR CDECL | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined (__BEOS__) | ||||||
|  | #  ifdef ZLIB_DLL | ||||||
|  | #    ifdef ZLIB_INTERNAL | ||||||
|  | #      define ZEXPORT   __declspec(dllexport) | ||||||
|  | #      define ZEXPORTVA __declspec(dllexport) | ||||||
|  | #    else | ||||||
|  | #      define ZEXPORT   __declspec(dllimport) | ||||||
|  | #      define ZEXPORTVA __declspec(dllimport) | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef ZEXTERN | ||||||
|  | #  define ZEXTERN extern | ||||||
|  | #endif | ||||||
|  | #ifndef ZEXPORT | ||||||
|  | #  define ZEXPORT | ||||||
|  | #endif | ||||||
|  | #ifndef ZEXPORTVA | ||||||
|  | #  define ZEXPORTVA | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef FAR | ||||||
|  | #  define FAR | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if !defined(__MACTYPES__) | ||||||
|  | typedef unsigned char  Byte;  /* 8 bits */ | ||||||
|  | #endif | ||||||
|  | typedef unsigned int   uInt;  /* 16 bits or more */ | ||||||
|  | typedef unsigned long  uLong; /* 32 bits or more */ | ||||||
|  | 
 | ||||||
|  | #ifdef SMALL_MEDIUM | ||||||
|  |    /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ | ||||||
|  | #  define Bytef Byte FAR | ||||||
|  | #else | ||||||
|  |    typedef Byte  FAR Bytef; | ||||||
|  | #endif | ||||||
|  | typedef char  FAR charf; | ||||||
|  | typedef int   FAR intf; | ||||||
|  | typedef uInt  FAR uIntf; | ||||||
|  | typedef uLong FAR uLongf; | ||||||
|  | 
 | ||||||
|  | #ifdef STDC | ||||||
|  |    typedef void const *voidpc; | ||||||
|  |    typedef void FAR   *voidpf; | ||||||
|  |    typedef void       *voidp; | ||||||
|  | #else | ||||||
|  |    typedef Byte const *voidpc; | ||||||
|  |    typedef Byte FAR   *voidpf; | ||||||
|  |    typedef Byte       *voidp; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) | ||||||
|  | #  include <limits.h> | ||||||
|  | #  if (UINT_MAX == 0xffffffffUL) | ||||||
|  | #    define Z_U4 unsigned | ||||||
|  | #  elif (ULONG_MAX == 0xffffffffUL) | ||||||
|  | #    define Z_U4 unsigned long | ||||||
|  | #  elif (USHRT_MAX == 0xffffffffUL) | ||||||
|  | #    define Z_U4 unsigned short | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef Z_U4 | ||||||
|  |    typedef Z_U4 z_crc_t; | ||||||
|  | #else | ||||||
|  |    typedef unsigned long z_crc_t; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if 1    /* was set to #if 1 by ./configure */ | ||||||
|  | #  define Z_HAVE_UNISTD_H | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if 1    /* was set to #if 1 by ./configure */ | ||||||
|  | #  define Z_HAVE_STDARG_H | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef STDC | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    include <sys/types.h>      /* for off_t */ | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(STDC) || defined(Z_HAVE_STDARG_H) | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    include <stdarg.h>         /* for va_list */ | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef _WIN32 | ||||||
|  | #  ifndef Z_SOLO | ||||||
|  | #    include <stddef.h>         /* for wchar_t */ | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
 | ||||||
|  |  * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even | ||||||
|  |  * though the former does not conform to the LFS document), but considering | ||||||
|  |  * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as | ||||||
|  |  * equivalently requesting no 64-bit operations | ||||||
|  |  */ | ||||||
|  | #if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 | ||||||
|  | #  undef _LARGEFILE64_SOURCE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) | ||||||
|  | #  define Z_HAVE_UNISTD_H | ||||||
|  | #endif | ||||||
|  | #ifndef Z_SOLO | ||||||
|  | #  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) | ||||||
|  | #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ | ||||||
|  | #    ifdef VMS | ||||||
|  | #      include <unixio.h>       /* for off_t */ | ||||||
|  | #    endif | ||||||
|  | #    ifndef z_off_t | ||||||
|  | #      define z_off_t off_t | ||||||
|  | #    endif | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 | ||||||
|  | #  define Z_LFS64 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) | ||||||
|  | #  define Z_LARGE64 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) | ||||||
|  | #  define Z_WANT64 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if !defined(SEEK_SET) && !defined(Z_SOLO) | ||||||
|  | #  define SEEK_SET        0       /* Seek from beginning of file.  */ | ||||||
|  | #  define SEEK_CUR        1       /* Seek from current position.  */ | ||||||
|  | #  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifndef z_off_t | ||||||
|  | #  define z_off_t long | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if !defined(_WIN32) && defined(Z_LARGE64) | ||||||
|  | #  define z_off64_t off64_t | ||||||
|  | #else | ||||||
|  | #  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) | ||||||
|  | #    define z_off64_t __int64 | ||||||
|  | #  else | ||||||
|  | #    define z_off64_t z_off_t | ||||||
|  | #  endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* MVS linker does not support external names larger than 8 bytes */ | ||||||
|  | #if defined(__MVS__) | ||||||
|  |   #pragma map(deflateInit_,"DEIN") | ||||||
|  |   #pragma map(deflateInit2_,"DEIN2") | ||||||
|  |   #pragma map(deflateEnd,"DEEND") | ||||||
|  |   #pragma map(deflateBound,"DEBND") | ||||||
|  |   #pragma map(inflateInit_,"ININ") | ||||||
|  |   #pragma map(inflateInit2_,"ININ2") | ||||||
|  |   #pragma map(inflateEnd,"INEND") | ||||||
|  |   #pragma map(inflateSync,"INSY") | ||||||
|  |   #pragma map(inflateSetDictionary,"INSEDI") | ||||||
|  |   #pragma map(compressBound,"CMBND") | ||||||
|  |   #pragma map(inflate_table,"INTABL") | ||||||
|  |   #pragma map(inflate_fast,"INFA") | ||||||
|  |   #pragma map(inflate_copyright,"INCOPY") | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* ZCONF_H */ | ||||||
							
								
								
									
										1912
									
								
								libs/platform/RK1808/zlib/include/zlib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1912
									
								
								libs/platform/RK1808/zlib/include/zlib.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so.1
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so.1.2.11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK1808/zlib/lib/Linux/libz.so.1.2.11
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										13
									
								
								libs/platform/RK1808/zlib/lib/Linux/pkgconfig/zlib.pc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								libs/platform/RK1808/zlib/lib/Linux/pkgconfig/zlib.pc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | prefix=/home/xz/Documents/testing/compile_test/zlib1211/zlib-1.2.11/rk1808 | ||||||
|  | exec_prefix=${prefix} | ||||||
|  | libdir=${exec_prefix}/lib | ||||||
|  | sharedlibdir=${libdir} | ||||||
|  | includedir=${prefix}/include | ||||||
|  | 
 | ||||||
|  | Name: zlib | ||||||
|  | Description: zlib compression library | ||||||
|  | Version: 1.2.11 | ||||||
|  | 
 | ||||||
|  | Requires: | ||||||
|  | Libs: -L${libdir} -L${sharedlibdir} -lz | ||||||
|  | Cflags: -I${includedir} | ||||||
							
								
								
									
										1
									
								
								libs/platform/RK3399PRO/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								libs/platform/RK3399PRO/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  |   | ||||||
							
								
								
									
										163
									
								
								libs/platform/RK3399PRO/libjpeg/include/jconfig.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								libs/platform/RK3399PRO/libjpeg/include/jconfig.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | |||||||
|  | /*
 | ||||||
|  |  * jconfig.txt | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 1991-1994, Thomas G. Lane. | ||||||
|  |  * Modified 2009-2013 by Guido Vollbeding. | ||||||
|  |  * This file is part of the Independent JPEG Group's software. | ||||||
|  |  * For conditions of distribution and use, see the accompanying README file. | ||||||
|  |  * | ||||||
|  |  * This file documents the configuration options that are required to | ||||||
|  |  * customize the JPEG software for a particular system. | ||||||
|  |  * | ||||||
|  |  * The actual configuration options for a particular installation are stored | ||||||
|  |  * in jconfig.h.  On many machines, jconfig.h can be generated automatically | ||||||
|  |  * or copied from one of the "canned" jconfig files that we supply.  But if | ||||||
|  |  * you need to generate a jconfig.h file by hand, this file tells you how. | ||||||
|  |  * | ||||||
|  |  * DO NOT EDIT THIS FILE --- IT WON'T ACCOMPLISH ANYTHING. | ||||||
|  |  * EDIT A COPY NAMED JCONFIG.H. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * These symbols indicate the properties of your machine or compiler. | ||||||
|  |  * #define the symbol if yes, #undef it if no. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Does your compiler support function prototypes?
 | ||||||
|  |  * (If not, you also need to use ansi2knr, see install.txt) | ||||||
|  |  */ | ||||||
|  | #define HAVE_PROTOTYPES | ||||||
|  | 
 | ||||||
|  | /* Does your compiler support the declaration "unsigned char" ?
 | ||||||
|  |  * How about "unsigned short" ? | ||||||
|  |  */ | ||||||
|  | #define HAVE_UNSIGNED_CHAR | ||||||
|  | #define HAVE_UNSIGNED_SHORT | ||||||
|  | 
 | ||||||
|  | /* Define this if an ordinary "char" type is unsigned.
 | ||||||
|  |  * If you're not sure, leaving it undefined will work at some cost in speed. | ||||||
|  |  * If you defined HAVE_UNSIGNED_CHAR then the speed difference is minimal. | ||||||
|  |  */ | ||||||
|  | /* #undef CHAR_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | /* Define this if your system has an ANSI-conforming <stddef.h> file.
 | ||||||
|  |  */ | ||||||
|  | #define HAVE_STDDEF_H | ||||||
|  | 
 | ||||||
|  | /* Define this if your system has an ANSI-conforming <stdlib.h> file.
 | ||||||
|  |  */ | ||||||
|  | #define HAVE_STDLIB_H | ||||||
|  | 
 | ||||||
|  | /* Define this if your system does not have an ANSI/SysV <string.h>,
 | ||||||
|  |  * but does have a BSD-style <strings.h>. | ||||||
|  |  */ | ||||||
|  | /* #undef NEED_BSD_STRINGS */ | ||||||
|  | 
 | ||||||
|  | /* Define this if your system does not provide typedef size_t in any of the
 | ||||||
|  |  * ANSI-standard places (stddef.h, stdlib.h, or stdio.h), but places it in | ||||||
|  |  * <sys/types.h> instead. | ||||||
|  |  */ | ||||||
|  | #define NEED_SYS_TYPES_H | ||||||
|  | 
 | ||||||
|  | /* For 80x86 machines, you need to define NEED_FAR_POINTERS,
 | ||||||
|  |  * unless you are using a large-data memory model or 80386 flat-memory mode. | ||||||
|  |  * On less brain-damaged CPUs this symbol must not be defined. | ||||||
|  |  * (Defining this symbol causes large data structures to be referenced through | ||||||
|  |  * "far" pointers and to be allocated with a special version of malloc.) | ||||||
|  |  */ | ||||||
|  | #undef NEED_FAR_POINTERS | ||||||
|  | 
 | ||||||
|  | /* Define this if your linker needs global names to be unique in less
 | ||||||
|  |  * than the first 15 characters. | ||||||
|  |  */ | ||||||
|  | #undef NEED_SHORT_EXTERNAL_NAMES | ||||||
|  | 
 | ||||||
|  | /* Although a real ANSI C compiler can deal perfectly well with pointers to
 | ||||||
|  |  * unspecified structures (see "incomplete types" in the spec), a few pre-ANSI | ||||||
|  |  * and pseudo-ANSI compilers get confused.  To keep one of these bozos happy, | ||||||
|  |  * define INCOMPLETE_TYPES_BROKEN.  This is not recommended unless you | ||||||
|  |  * actually get "missing structure definition" warnings or errors while | ||||||
|  |  * compiling the JPEG code. | ||||||
|  |  */ | ||||||
|  | #undef INCOMPLETE_TYPES_BROKEN | ||||||
|  | 
 | ||||||
|  | /* Define "boolean" as unsigned char, not enum, on Windows systems.
 | ||||||
|  |  */ | ||||||
|  | #ifdef _WIN32 | ||||||
|  | #ifndef __RPCNDR_H__		/* don't conflict if rpcndr.h already read */ | ||||||
|  | typedef unsigned char boolean; | ||||||
|  | #endif | ||||||
|  | #ifndef FALSE			/* in case these macros already exist */ | ||||||
|  | #define FALSE	0		/* values of boolean */ | ||||||
|  | #endif | ||||||
|  | #ifndef TRUE | ||||||
|  | #define TRUE	1 | ||||||
|  | #endif | ||||||
|  | #define HAVE_BOOLEAN		/* prevent jmorecfg.h from redefining it */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * The following options affect code selection within the JPEG library, | ||||||
|  |  * but they don't need to be visible to applications using the library. | ||||||
|  |  * To minimize application namespace pollution, the symbols won't be | ||||||
|  |  * defined unless JPEG_INTERNALS has been defined. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNALS | ||||||
|  | 
 | ||||||
|  | /* Define this if your compiler implements ">>" on signed values as a logical
 | ||||||
|  |  * (unsigned) shift; leave it undefined if ">>" is a signed (arithmetic) shift, | ||||||
|  |  * which is the normal and rational definition. | ||||||
|  |  */ | ||||||
|  | /* #undef RIGHT_SHIFT_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_INTERNALS */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * The remaining options do not affect the JPEG library proper, | ||||||
|  |  * but only the sample applications cjpeg/djpeg (see cjpeg.c, djpeg.c). | ||||||
|  |  * Other applications can ignore these. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_CJPEG_DJPEG | ||||||
|  | 
 | ||||||
|  | /* These defines indicate which image (non-JPEG) file formats are allowed. */ | ||||||
|  | 
 | ||||||
|  | #define BMP_SUPPORTED		/* BMP image file format */ | ||||||
|  | #define GIF_SUPPORTED		/* GIF image file format */ | ||||||
|  | #define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */ | ||||||
|  | #undef RLE_SUPPORTED		/* Utah RLE image file format */ | ||||||
|  | #define TARGA_SUPPORTED		/* Targa image file format */ | ||||||
|  | 
 | ||||||
|  | /* Define this if you want to name both input and output files on the command
 | ||||||
|  |  * line, rather than using stdout and optionally stdin.  You MUST do this if | ||||||
|  |  * your system can't cope with binary I/O to stdin/stdout.  See comments at | ||||||
|  |  * head of cjpeg.c or djpeg.c. | ||||||
|  |  */ | ||||||
|  | #undef TWO_FILE_COMMANDLINE | ||||||
|  | 
 | ||||||
|  | /* #undef USE_SETMODE */ | ||||||
|  | 
 | ||||||
|  | /* Define this if your system needs explicit cleanup of temporary files.
 | ||||||
|  |  * This is crucial under MS-DOS, where the temporary "files" may be areas | ||||||
|  |  * of extended memory; on most other systems it's not as important. | ||||||
|  |  */ | ||||||
|  | #undef NEED_SIGNAL_CATCHER | ||||||
|  | 
 | ||||||
|  | /* By default, we open image files with fopen(...,"rb") or fopen(...,"wb").
 | ||||||
|  |  * This is necessary on systems that distinguish text files from binary files, | ||||||
|  |  * and is harmless on most systems that don't.  If you have one of the rare | ||||||
|  |  * systems that complains about the "b" spec, define this symbol. | ||||||
|  |  */ | ||||||
|  | #undef DONT_USE_B_MODE | ||||||
|  | 
 | ||||||
|  | /* Define this if you want percent-done progress reports from cjpeg/djpeg.
 | ||||||
|  |  */ | ||||||
|  | #undef PROGRESS_REPORT | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_CJPEG_DJPEG */ | ||||||
							
								
								
									
										304
									
								
								libs/platform/RK3399PRO/libjpeg/include/jerror.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								libs/platform/RK3399PRO/libjpeg/include/jerror.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,304 @@ | |||||||
|  | /*
 | ||||||
|  |  * jerror.h | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 1994-1997, Thomas G. Lane. | ||||||
|  |  * Modified 1997-2012 by Guido Vollbeding. | ||||||
|  |  * This file is part of the Independent JPEG Group's software. | ||||||
|  |  * For conditions of distribution and use, see the accompanying README file. | ||||||
|  |  * | ||||||
|  |  * This file defines the error and message codes for the JPEG library. | ||||||
|  |  * Edit this file to add new codes, or to translate the message strings to | ||||||
|  |  * some other language. | ||||||
|  |  * A set of error-reporting macros are defined too.  Some applications using | ||||||
|  |  * the JPEG library may wish to include this file to get the error codes | ||||||
|  |  * and/or the macros. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * To define the enum list of message codes, include this file without | ||||||
|  |  * defining macro JMESSAGE.  To create a message string table, include it | ||||||
|  |  * again with a suitable JMESSAGE definition (see jerror.c for an example). | ||||||
|  |  */ | ||||||
|  | #ifndef JMESSAGE | ||||||
|  | #ifndef JERROR_H | ||||||
|  | /* First time through, define the enum list */ | ||||||
|  | #define JMAKE_ENUM_LIST | ||||||
|  | #else | ||||||
|  | /* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */ | ||||||
|  | #define JMESSAGE(code,string) | ||||||
|  | #endif /* JERROR_H */ | ||||||
|  | #endif /* JMESSAGE */ | ||||||
|  | 
 | ||||||
|  | #ifdef JMAKE_ENUM_LIST | ||||||
|  | 
 | ||||||
|  | typedef enum { | ||||||
|  | 
 | ||||||
|  | #define JMESSAGE(code,string)	code , | ||||||
|  | 
 | ||||||
|  | #endif /* JMAKE_ENUM_LIST */ | ||||||
|  | 
 | ||||||
|  | JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */ | ||||||
|  | 
 | ||||||
|  | /* For maintenance convenience, list is alphabetical by message code name */ | ||||||
|  | JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix") | ||||||
|  | JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix") | ||||||
|  | JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode") | ||||||
|  | JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS") | ||||||
|  | JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") | ||||||
|  | JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range") | ||||||
|  | JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported") | ||||||
|  | JMESSAGE(JERR_BAD_DROP_SAMPLING, | ||||||
|  | 	 "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") | ||||||
|  | JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition") | ||||||
|  | JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace") | ||||||
|  | JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace") | ||||||
|  | JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length") | ||||||
|  | JMESSAGE(JERR_BAD_LIB_VERSION, | ||||||
|  | 	 "Wrong JPEG library version: library is %d, caller expects %d") | ||||||
|  | JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan") | ||||||
|  | JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d") | ||||||
|  | JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d") | ||||||
|  | JMESSAGE(JERR_BAD_PROGRESSION, | ||||||
|  | 	 "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d") | ||||||
|  | JMESSAGE(JERR_BAD_PROG_SCRIPT, | ||||||
|  | 	 "Invalid progressive parameters at scan script entry %d") | ||||||
|  | JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors") | ||||||
|  | JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d") | ||||||
|  | JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d") | ||||||
|  | JMESSAGE(JERR_BAD_STRUCT_SIZE, | ||||||
|  | 	 "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u") | ||||||
|  | JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access") | ||||||
|  | JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small") | ||||||
|  | JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here") | ||||||
|  | JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet") | ||||||
|  | JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d") | ||||||
|  | JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request") | ||||||
|  | JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d") | ||||||
|  | JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x") | ||||||
|  | JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d") | ||||||
|  | JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d") | ||||||
|  | JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)") | ||||||
|  | JMESSAGE(JERR_EMS_READ, "Read from EMS failed") | ||||||
|  | JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed") | ||||||
|  | JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan") | ||||||
|  | JMESSAGE(JERR_FILE_READ, "Input file read error") | ||||||
|  | JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?") | ||||||
|  | JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet") | ||||||
|  | JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow") | ||||||
|  | JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry") | ||||||
|  | JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels") | ||||||
|  | JMESSAGE(JERR_INPUT_EMPTY, "Empty input file") | ||||||
|  | JMESSAGE(JERR_INPUT_EOF, "Premature end of input file") | ||||||
|  | JMESSAGE(JERR_MISMATCHED_QUANT_TABLE, | ||||||
|  | 	 "Cannot transcode due to multiple use of quantization table %d") | ||||||
|  | JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data") | ||||||
|  | JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change") | ||||||
|  | JMESSAGE(JERR_NOTIMPL, "Not implemented yet") | ||||||
|  | JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time") | ||||||
|  | JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported") | ||||||
|  | JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image") | ||||||
|  | JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined") | ||||||
|  | JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x") | ||||||
|  | JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)") | ||||||
|  | JMESSAGE(JERR_QUANT_COMPONENTS, | ||||||
|  | 	 "Cannot quantize more than %d color components") | ||||||
|  | JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors") | ||||||
|  | JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors") | ||||||
|  | JMESSAGE(JERR_SOF_BEFORE, "Invalid JPEG file structure: %s before SOF") | ||||||
|  | JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers") | ||||||
|  | JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker") | ||||||
|  | JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x") | ||||||
|  | JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers") | ||||||
|  | JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s") | ||||||
|  | JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file") | ||||||
|  | JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file") | ||||||
|  | JMESSAGE(JERR_TFILE_WRITE, | ||||||
|  | 	 "Write failed on temporary file --- out of disk space?") | ||||||
|  | JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines") | ||||||
|  | JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x") | ||||||
|  | JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up") | ||||||
|  | JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation") | ||||||
|  | JMESSAGE(JERR_XMS_READ, "Read from XMS failed") | ||||||
|  | JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed") | ||||||
|  | JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT) | ||||||
|  | JMESSAGE(JMSG_VERSION, JVERSION) | ||||||
|  | JMESSAGE(JTRC_16BIT_TABLES, | ||||||
|  | 	 "Caution: quantization tables are too coarse for baseline JPEG") | ||||||
|  | JMESSAGE(JTRC_ADOBE, | ||||||
|  | 	 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d") | ||||||
|  | JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u") | ||||||
|  | JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u") | ||||||
|  | JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x") | ||||||
|  | JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x") | ||||||
|  | JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d") | ||||||
|  | JMESSAGE(JTRC_DRI, "Define Restart Interval %u") | ||||||
|  | JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u") | ||||||
|  | JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u") | ||||||
|  | JMESSAGE(JTRC_EOI, "End Of Image") | ||||||
|  | JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d") | ||||||
|  | JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d") | ||||||
|  | JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE, | ||||||
|  | 	 "Warning: thumbnail image size does not match data length %u") | ||||||
|  | JMESSAGE(JTRC_JFIF_EXTENSION, | ||||||
|  | 	 "JFIF extension marker: type 0x%02x, length %u") | ||||||
|  | JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image") | ||||||
|  | JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u") | ||||||
|  | JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x") | ||||||
|  | JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u") | ||||||
|  | JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors") | ||||||
|  | JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors") | ||||||
|  | JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization") | ||||||
|  | JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d") | ||||||
|  | JMESSAGE(JTRC_RST, "RST%d") | ||||||
|  | JMESSAGE(JTRC_SMOOTH_NOTIMPL, | ||||||
|  | 	 "Smoothing not supported with nonstandard sampling ratios") | ||||||
|  | JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d") | ||||||
|  | JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d") | ||||||
|  | JMESSAGE(JTRC_SOI, "Start of Image") | ||||||
|  | JMESSAGE(JTRC_SOS, "Start Of Scan: %d components") | ||||||
|  | JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d") | ||||||
|  | JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d") | ||||||
|  | JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s") | ||||||
|  | JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s") | ||||||
|  | JMESSAGE(JTRC_THUMB_JPEG, | ||||||
|  | 	 "JFIF extension marker: JPEG-compressed thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_THUMB_PALETTE, | ||||||
|  | 	 "JFIF extension marker: palette thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_THUMB_RGB, | ||||||
|  | 	 "JFIF extension marker: RGB thumbnail image, length %u") | ||||||
|  | JMESSAGE(JTRC_UNKNOWN_IDS, | ||||||
|  | 	 "Unrecognized component IDs %d %d %d, assuming YCbCr") | ||||||
|  | JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u") | ||||||
|  | JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u") | ||||||
|  | JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d") | ||||||
|  | JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code") | ||||||
|  | JMESSAGE(JWRN_BOGUS_PROGRESSION, | ||||||
|  | 	 "Inconsistent progression sequence for component %d coefficient %d") | ||||||
|  | JMESSAGE(JWRN_EXTRANEOUS_DATA, | ||||||
|  | 	 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x") | ||||||
|  | JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment") | ||||||
|  | JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code") | ||||||
|  | JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d") | ||||||
|  | JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file") | ||||||
|  | JMESSAGE(JWRN_MUST_RESYNC, | ||||||
|  | 	 "Corrupt JPEG data: found marker 0x%02x instead of RST%d") | ||||||
|  | JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG") | ||||||
|  | JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines") | ||||||
|  | 
 | ||||||
|  | #ifdef JMAKE_ENUM_LIST | ||||||
|  | 
 | ||||||
|  |   JMSG_LASTMSGCODE | ||||||
|  | } J_MESSAGE_CODE; | ||||||
|  | 
 | ||||||
|  | #undef JMAKE_ENUM_LIST | ||||||
|  | #endif /* JMAKE_ENUM_LIST */ | ||||||
|  | 
 | ||||||
|  | /* Zap JMESSAGE macro so that future re-inclusions do nothing by default */ | ||||||
|  | #undef JMESSAGE | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #ifndef JERROR_H | ||||||
|  | #define JERROR_H | ||||||
|  | 
 | ||||||
|  | /* Macros to simplify using the error and trace message stuff */ | ||||||
|  | /* The first parameter is either type of cinfo pointer */ | ||||||
|  | 
 | ||||||
|  | /* Fatal errors (print message and exit) */ | ||||||
|  | #define ERREXIT(cinfo,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT1(cinfo,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT2(cinfo,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT3(cinfo,code,p1,p2,p3)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[3] = (p4), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[2] = (p3), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[3] = (p4), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[4] = (p5), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[5] = (p6), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | #define ERREXITS(cinfo,code,str)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ | ||||||
|  |    (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo))) | ||||||
|  | 
 | ||||||
|  | #define MAKESTMT(stuff)		do { stuff } while (0) | ||||||
|  | 
 | ||||||
|  | /* Nonfatal errors (we can keep going, but the data is probably corrupt) */ | ||||||
|  | #define WARNMS(cinfo,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | #define WARNMS1(cinfo,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | #define WARNMS2(cinfo,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1)) | ||||||
|  | 
 | ||||||
|  | /* Informational/debugging messages */ | ||||||
|  | #define TRACEMS(cinfo,lvl,code)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS1(cinfo,lvl,code,p1)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS2(cinfo,lvl,code,p1,p2)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[0] = (p1), \ | ||||||
|  |    (cinfo)->err->msg_parm.i[1] = (p2), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | #define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   _mp[4] = (p5); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \ | ||||||
|  |   MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \ | ||||||
|  | 	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \ | ||||||
|  | 	   _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \ | ||||||
|  | 	   (cinfo)->err->msg_code = (code); \ | ||||||
|  | 	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); ) | ||||||
|  | #define TRACEMSS(cinfo,lvl,code,str)  \ | ||||||
|  |   ((cinfo)->err->msg_code = (code), \ | ||||||
|  |    strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ | ||||||
|  |    (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl))) | ||||||
|  | 
 | ||||||
|  | #endif /* JERROR_H */ | ||||||
							
								
								
									
										446
									
								
								libs/platform/RK3399PRO/libjpeg/include/jmorecfg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										446
									
								
								libs/platform/RK3399PRO/libjpeg/include/jmorecfg.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,446 @@ | |||||||
|  | /*
 | ||||||
|  |  * jmorecfg.h | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 1991-1997, Thomas G. Lane. | ||||||
|  |  * Modified 1997-2013 by Guido Vollbeding. | ||||||
|  |  * This file is part of the Independent JPEG Group's software. | ||||||
|  |  * For conditions of distribution and use, see the accompanying README file. | ||||||
|  |  * | ||||||
|  |  * This file contains additional configuration options that customize the | ||||||
|  |  * JPEG software for special applications or support machine-dependent | ||||||
|  |  * optimizations.  Most users will not need to touch this file. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Define BITS_IN_JSAMPLE as either | ||||||
|  |  *   8   for 8-bit sample values (the usual setting) | ||||||
|  |  *   9   for 9-bit sample values | ||||||
|  |  *   10  for 10-bit sample values | ||||||
|  |  *   11  for 11-bit sample values | ||||||
|  |  *   12  for 12-bit sample values | ||||||
|  |  * Only 8, 9, 10, 11, and 12 bits sample data precision are supported for | ||||||
|  |  * full-feature DCT processing.  Further depths up to 16-bit may be added | ||||||
|  |  * later for the lossless modes of operation. | ||||||
|  |  * Run-time selection and conversion of data precision will be added later | ||||||
|  |  * and are currently not supported, sorry. | ||||||
|  |  * Exception:  The transcoding part (jpegtran) supports all settings in a | ||||||
|  |  * single instance, since it operates on the level of DCT coefficients and | ||||||
|  |  * not sample values.  The DCT coefficients are of the same type (16 bits) | ||||||
|  |  * in all cases (see below). | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define BITS_IN_JSAMPLE  8	/* use 8, 9, 10, 11, or 12 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Maximum number of components (color channels) allowed in JPEG image. | ||||||
|  |  * To meet the letter of the JPEG spec, set this to 255.  However, darn | ||||||
|  |  * few applications need more than 4 channels (maybe 5 for CMYK + alpha | ||||||
|  |  * mask).  We recommend 10 as a reasonable compromise; use 4 if you are | ||||||
|  |  * really short on memory.  (Each allowed component costs a hundred or so | ||||||
|  |  * bytes of storage, whether actually used in an image or not.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define MAX_COMPONENTS  10	/* maximum number of image components */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Basic data types. | ||||||
|  |  * You may need to change these if you have a machine with unusual data | ||||||
|  |  * type sizes; for example, "char" not 8 bits, "short" not 16 bits, | ||||||
|  |  * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits, | ||||||
|  |  * but it had better be at least 16. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Representation of a single sample (pixel element value).
 | ||||||
|  |  * We frequently allocate large arrays of these, so it's important to keep | ||||||
|  |  * them small.  But if you have memory to burn and access to char or short | ||||||
|  |  * arrays is very slow on your hardware, you might want to change these. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 8 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..255.
 | ||||||
|  |  * You can use a signed char by having GETJSAMPLE mask it with 0xFF. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | 
 | ||||||
|  | typedef unsigned char JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | typedef char JSAMPLE; | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | #else | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value) & 0xFF) | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	255 | ||||||
|  | #define CENTERJSAMPLE	128 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 8 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 9 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..511.
 | ||||||
|  |  * On nearly all machines "short" will do nicely. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	511 | ||||||
|  | #define CENTERJSAMPLE	256 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 9 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 10 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..1023.
 | ||||||
|  |  * On nearly all machines "short" will do nicely. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	1023 | ||||||
|  | #define CENTERJSAMPLE	512 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 10 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 11 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..2047.
 | ||||||
|  |  * On nearly all machines "short" will do nicely. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	2047 | ||||||
|  | #define CENTERJSAMPLE	1024 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 11 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #if BITS_IN_JSAMPLE == 12 | ||||||
|  | /* JSAMPLE should be the smallest type that will hold the values 0..4095.
 | ||||||
|  |  * On nearly all machines "short" will do nicely. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JSAMPLE; | ||||||
|  | #define GETJSAMPLE(value)  ((int) (value)) | ||||||
|  | 
 | ||||||
|  | #define MAXJSAMPLE	4095 | ||||||
|  | #define CENTERJSAMPLE	2048 | ||||||
|  | 
 | ||||||
|  | #endif /* BITS_IN_JSAMPLE == 12 */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Representation of a DCT frequency coefficient.
 | ||||||
|  |  * This should be a signed value of at least 16 bits; "short" is usually OK. | ||||||
|  |  * Again, we allocate large arrays of these, but you can change to int | ||||||
|  |  * if you have memory to burn and "short" is really slow. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef short JCOEF; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Compressed datastreams are represented as arrays of JOCTET.
 | ||||||
|  |  * These must be EXACTLY 8 bits wide, at least once they are written to | ||||||
|  |  * external storage.  Note that when using the stdio data source/destination | ||||||
|  |  * managers, this is also the data type passed to fread/fwrite. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | 
 | ||||||
|  | typedef unsigned char JOCTET; | ||||||
|  | #define GETJOCTET(value)  (value) | ||||||
|  | 
 | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | typedef char JOCTET; | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | #define GETJOCTET(value)  (value) | ||||||
|  | #else | ||||||
|  | #define GETJOCTET(value)  ((value) & 0xFF) | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | 
 | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* These typedefs are used for various table entries and so forth.
 | ||||||
|  |  * They must be at least as wide as specified; but making them too big | ||||||
|  |  * won't cost a huge amount of memory, so we don't provide special | ||||||
|  |  * extraction code like we did for JSAMPLE.  (In other words, these | ||||||
|  |  * typedefs live at a different point on the speed/space tradeoff curve.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* UINT8 must hold at least the values 0..255. */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_CHAR | ||||||
|  | typedef unsigned char UINT8; | ||||||
|  | #else /* not HAVE_UNSIGNED_CHAR */ | ||||||
|  | #ifdef CHAR_IS_UNSIGNED | ||||||
|  | typedef char UINT8; | ||||||
|  | #else /* not CHAR_IS_UNSIGNED */ | ||||||
|  | typedef short UINT8; | ||||||
|  | #endif /* CHAR_IS_UNSIGNED */ | ||||||
|  | #endif /* HAVE_UNSIGNED_CHAR */ | ||||||
|  | 
 | ||||||
|  | /* UINT16 must hold at least the values 0..65535. */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_UNSIGNED_SHORT | ||||||
|  | typedef unsigned short UINT16; | ||||||
|  | #else /* not HAVE_UNSIGNED_SHORT */ | ||||||
|  | typedef unsigned int UINT16; | ||||||
|  | #endif /* HAVE_UNSIGNED_SHORT */ | ||||||
|  | 
 | ||||||
|  | /* INT16 must hold at least the values -32768..32767. */ | ||||||
|  | 
 | ||||||
|  | #ifndef XMD_H			/* X11/xmd.h correctly defines INT16 */ | ||||||
|  | typedef short INT16; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* INT32 must hold at least signed 32-bit values. */ | ||||||
|  | 
 | ||||||
|  | #ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */ | ||||||
|  | #ifndef _BASETSD_H_		/* Microsoft defines it in basetsd.h */ | ||||||
|  | #ifndef _BASETSD_H		/* MinGW is slightly different */ | ||||||
|  | #ifndef QGLOBAL_H		/* Qt defines it in qglobal.h */ | ||||||
|  | typedef long INT32; | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Datatype used for image dimensions.  The JPEG standard only supports
 | ||||||
|  |  * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore | ||||||
|  |  * "unsigned int" is sufficient on all machines.  However, if you need to | ||||||
|  |  * handle larger images and you don't mind deviating from the spec, you | ||||||
|  |  * can change this datatype. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | typedef unsigned int JDIMENSION; | ||||||
|  | 
 | ||||||
|  | #define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* These macros are used in all function definitions and extern declarations.
 | ||||||
|  |  * You could modify them if you need to change function linkage conventions; | ||||||
|  |  * in particular, you'll need to do that to make the library a Windows DLL. | ||||||
|  |  * Another application is to make all functions global for use with debuggers | ||||||
|  |  * or code profilers that require it. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* a function called through method pointers: */ | ||||||
|  | #define METHODDEF(type)		static type | ||||||
|  | /* a function used only in its module: */ | ||||||
|  | #define LOCAL(type)		static type | ||||||
|  | /* a function referenced thru EXTERNs: */ | ||||||
|  | #define GLOBAL(type)		type | ||||||
|  | /* a reference to a GLOBAL function: */ | ||||||
|  | #define EXTERN(type)		extern type | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* This macro is used to declare a "method", that is, a function pointer.
 | ||||||
|  |  * We want to supply prototype parameters if the compiler can cope. | ||||||
|  |  * Note that the arglist parameter must be parenthesized! | ||||||
|  |  * Again, you can customize this if you need special linkage keywords. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_PROTOTYPES | ||||||
|  | #define JMETHOD(type,methodname,arglist)  type (*methodname) arglist | ||||||
|  | #else | ||||||
|  | #define JMETHOD(type,methodname,arglist)  type (*methodname) () | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* The noreturn type identifier is used to declare functions
 | ||||||
|  |  * which cannot return. | ||||||
|  |  * Compilers can thus create more optimized code and perform | ||||||
|  |  * better checks for warnings and errors. | ||||||
|  |  * Static analyzer tools can make improved inferences about | ||||||
|  |  * execution paths and are prevented from giving false alerts. | ||||||
|  |  * | ||||||
|  |  * Unfortunately, the proposed specifications of corresponding | ||||||
|  |  * extensions in the Dec 2011 ISO C standard revision (C11), | ||||||
|  |  * GCC, MSVC, etc. are not viable. | ||||||
|  |  * Thus we introduce a user defined type to declare noreturn | ||||||
|  |  * functions at least for clarity.  A proper compiler would | ||||||
|  |  * have a suitable noreturn type to match in place of void. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef HAVE_NORETURN_T | ||||||
|  | typedef void noreturn_t; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Here is the pseudo-keyword for declaring pointers that must be "far"
 | ||||||
|  |  * on 80x86 machines.  Most of the specialized coding for 80x86 is handled | ||||||
|  |  * by just saying "FAR *" where such a pointer is needed.  In a few places | ||||||
|  |  * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef FAR | ||||||
|  | #ifdef NEED_FAR_POINTERS | ||||||
|  | #define FAR  far | ||||||
|  | #else | ||||||
|  | #define FAR | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * On a few systems, type boolean and/or its values FALSE, TRUE may appear | ||||||
|  |  * in standard header files.  Or you may have conflicts with application- | ||||||
|  |  * specific header files that you want to include together with these files. | ||||||
|  |  * Defining HAVE_BOOLEAN before including jpeglib.h should make it work. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef HAVE_BOOLEAN | ||||||
|  | #if defined FALSE || defined TRUE || defined QGLOBAL_H | ||||||
|  | /* Qt3 defines FALSE and TRUE as "const" variables in qglobal.h */ | ||||||
|  | typedef int boolean; | ||||||
|  | #ifndef FALSE			/* in case these macros already exist */ | ||||||
|  | #define FALSE	0		/* values of boolean */ | ||||||
|  | #endif | ||||||
|  | #ifndef TRUE | ||||||
|  | #define TRUE	1 | ||||||
|  | #endif | ||||||
|  | #else | ||||||
|  | typedef enum { FALSE = 0, TRUE = 1 } boolean; | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * The remaining options affect code selection within the JPEG library, | ||||||
|  |  * but they don't need to be visible to most applications using the library. | ||||||
|  |  * To minimize application namespace pollution, the symbols won't be | ||||||
|  |  * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNALS | ||||||
|  | #define JPEG_INTERNAL_OPTIONS | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef JPEG_INTERNAL_OPTIONS | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * These defines indicate whether to include various optional functions. | ||||||
|  |  * Undefining some of these symbols will produce a smaller but less capable | ||||||
|  |  * library.  Note that you can leave certain source files out of the | ||||||
|  |  * compilation/linking process if you've #undef'd the corresponding symbols. | ||||||
|  |  * (You may HAVE to do that if your compiler doesn't like null source files.) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /* Capability options common to encoder and decoder: */ | ||||||
|  | 
 | ||||||
|  | #define DCT_ISLOW_SUPPORTED	/* slow but accurate integer algorithm */ | ||||||
|  | #define DCT_IFAST_SUPPORTED	/* faster, less accurate integer method */ | ||||||
|  | #define DCT_FLOAT_SUPPORTED	/* floating-point: accurate, fast on fast HW */ | ||||||
|  | 
 | ||||||
|  | /* Encoder capability options: */ | ||||||
|  | 
 | ||||||
|  | #define C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */ | ||||||
|  | #define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ | ||||||
|  | #define C_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/ | ||||||
|  | #define DCT_SCALING_SUPPORTED	    /* Input rescaling via DCT? (Requires DCT_ISLOW)*/ | ||||||
|  | #define ENTROPY_OPT_SUPPORTED	    /* Optimization of entropy coding parms? */ | ||||||
|  | /* Note: if you selected more than 8-bit data precision, it is dangerous to
 | ||||||
|  |  * turn off ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only | ||||||
|  |  * good for 8-bit precision, so arithmetic coding is recommended for higher | ||||||
|  |  * precision.  The Huffman encoder normally uses entropy optimization to | ||||||
|  |  * compute usable tables for higher precision.  Otherwise, you'll have to | ||||||
|  |  * supply different default Huffman tables. | ||||||
|  |  * The exact same statements apply for progressive JPEG: the default tables | ||||||
|  |  * don't work for progressive mode.  (This may get fixed, however.) | ||||||
|  |  */ | ||||||
|  | #define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */ | ||||||
|  | 
 | ||||||
|  | /* Decoder capability options: */ | ||||||
|  | 
 | ||||||
|  | #define D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */ | ||||||
|  | #define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */ | ||||||
|  | #define D_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/ | ||||||
|  | #define IDCT_SCALING_SUPPORTED	    /* Output rescaling via IDCT? (Requires DCT_ISLOW)*/ | ||||||
|  | #define SAVE_MARKERS_SUPPORTED	    /* jpeg_save_markers() needed? */ | ||||||
|  | #define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */ | ||||||
|  | #undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */ | ||||||
|  | #define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */ | ||||||
|  | #define QUANT_1PASS_SUPPORTED	    /* 1-pass color quantization? */ | ||||||
|  | #define QUANT_2PASS_SUPPORTED	    /* 2-pass color quantization? */ | ||||||
|  | 
 | ||||||
|  | /* more capability options later, no doubt */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Ordering of RGB data in scanlines passed to or from the application. | ||||||
|  |  * If your application wants to deal with data in the order B,G,R, just | ||||||
|  |  * change these macros.  You can also deal with formats such as R,G,B,X | ||||||
|  |  * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing | ||||||
|  |  * the offsets will also change the order in which colormap data is organized. | ||||||
|  |  * RESTRICTIONS: | ||||||
|  |  * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats. | ||||||
|  |  * 2. The color quantizer modules will not behave desirably if RGB_PIXELSIZE | ||||||
|  |  *    is not 3 (they don't understand about dummy color components!).  So you | ||||||
|  |  *    can't use color quantization if you change that value. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define RGB_RED		0	/* Offset of Red in an RGB scanline element */ | ||||||
|  | #define RGB_GREEN	1	/* Offset of Green */ | ||||||
|  | #define RGB_BLUE	2	/* Offset of Blue */ | ||||||
|  | #define RGB_PIXELSIZE	3	/* JSAMPLEs per RGB scanline element */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Definitions for speed-related optimizations. */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* If your compiler supports inline functions, define INLINE
 | ||||||
|  |  * as the inline keyword; otherwise define it as empty. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef INLINE | ||||||
|  | #ifdef __GNUC__			/* for instance, GNU C knows about inline */ | ||||||
|  | #define INLINE __inline__ | ||||||
|  | #endif | ||||||
|  | #ifndef INLINE | ||||||
|  | #define INLINE			/* default is to define it as empty */ | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
 | ||||||
|  |  * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER | ||||||
|  |  * as short on such a machine.  MULTIPLIER must be at least 16 bits wide. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef MULTIPLIER | ||||||
|  | #define MULTIPLIER  int		/* type for fastest integer multiply */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* FAST_FLOAT should be either float or double, whichever is done faster
 | ||||||
|  |  * by your compiler.  (Note that this type is only used in the floating point | ||||||
|  |  * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.) | ||||||
|  |  * Typically, float is faster in ANSI C compilers, while double is faster in | ||||||
|  |  * pre-ANSI compilers (because they insist on converting to double anyway). | ||||||
|  |  * The code below therefore chooses float if we have ANSI-style prototypes. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef FAST_FLOAT | ||||||
|  | #ifdef HAVE_PROTOTYPES | ||||||
|  | #define FAST_FLOAT  float | ||||||
|  | #else | ||||||
|  | #define FAST_FLOAT  double | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* JPEG_INTERNAL_OPTIONS */ | ||||||
							
								
								
									
										1180
									
								
								libs/platform/RK3399PRO/libjpeg/include/jpeglib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1180
									
								
								libs/platform/RK3399PRO/libjpeg/include/jpeglib.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Android/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Android/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Android/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Android/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.a
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.la
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.la
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | # libjpeg.la - a libtool library file | ||||||
|  | # Generated by libtool (GNU libtool) 2.4.2 | ||||||
|  | # | ||||||
|  | # Please DO NOT delete this file! | ||||||
|  | # It is necessary for linking the library. | ||||||
|  | 
 | ||||||
|  | # The name that we can dlopen(3). | ||||||
|  | dlname='libjpeg.so.8' | ||||||
|  | 
 | ||||||
|  | # Names of this library. | ||||||
|  | library_names='libjpeg.so.8.4.0 libjpeg.so.8 libjpeg.so' | ||||||
|  | 
 | ||||||
|  | # The name of the static archive. | ||||||
|  | old_library='libjpeg.a' | ||||||
|  | 
 | ||||||
|  | # Linker flags that can not go in dependency_libs. | ||||||
|  | inherited_linker_flags='' | ||||||
|  | 
 | ||||||
|  | # Libraries that this one depends upon. | ||||||
|  | dependency_libs=' -L/home/xz/Documents/testing/compile_test/lpng1637/zlib/rk1808/lib' | ||||||
|  | 
 | ||||||
|  | # Names of additional weak libraries provided by this library | ||||||
|  | weak_library_names='' | ||||||
|  | 
 | ||||||
|  | # Version information for libjpeg. | ||||||
|  | current=12 | ||||||
|  | age=4 | ||||||
|  | revision=0 | ||||||
|  | 
 | ||||||
|  | # Is this an already installed library? | ||||||
|  | installed=yes | ||||||
|  | 
 | ||||||
|  | # Should we warn about portability when linking against -modules? | ||||||
|  | shouldnotlink=no | ||||||
|  | 
 | ||||||
|  | # Files to dlopen/dlpreopen | ||||||
|  | dlopen='' | ||||||
|  | dlpreopen='' | ||||||
|  | 
 | ||||||
|  | # Directory that this library needs to be installed in: | ||||||
|  | libdir='/home/xz/Documents/testing/compile_test/jpegsrc.v8d1/jpeg-8d1/rk1808/lib' | ||||||
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.so
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.so.8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								libs/platform/RK3399PRO/libjpeg/lib/Linux/libjpeg.so.8
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user