rzzn #1
							
								
								
									
										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