13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (C) 2016 Rockchip Electronics Co., Ltd. 33d0407baSopenharmony_ci * Authors: 43d0407baSopenharmony_ci * Zhiqin Wei <wzq@rock-chips.com> 53d0407baSopenharmony_ci * 63d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 73d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 83d0407baSopenharmony_ci * You may obtain a copy of the License at 93d0407baSopenharmony_ci * 103d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 113d0407baSopenharmony_ci * 123d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 133d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 143d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 153d0407baSopenharmony_ci * See the License for the specific language governing permissions and 163d0407baSopenharmony_ci * limitations under the License. 173d0407baSopenharmony_ci */ 183d0407baSopenharmony_ci 193d0407baSopenharmony_ci#ifndef _rockchip_rga_h_ 203d0407baSopenharmony_ci#define _rockchip_rga_h_ 213d0407baSopenharmony_ci 223d0407baSopenharmony_ci#include <stdint.h> 233d0407baSopenharmony_ci#include <sys/types.h> 243d0407baSopenharmony_ci#include <stdlib.h> 253d0407baSopenharmony_ci#include <stdio.h> 263d0407baSopenharmony_ci#include <string.h> 273d0407baSopenharmony_ci#include <errno.h> 283d0407baSopenharmony_ci#include <time.h> 293d0407baSopenharmony_ci#include <unistd.h> 303d0407baSopenharmony_ci#include <sys/mman.h> 313d0407baSopenharmony_ci#include <linux/stddef.h> 323d0407baSopenharmony_ci 333d0407baSopenharmony_ci#include "drmrga.h" 343d0407baSopenharmony_ci#include "GrallocOps.h" 353d0407baSopenharmony_ci#include "RgaUtils.h" 363d0407baSopenharmony_ci#include "rga.h" 373d0407baSopenharmony_ci 383d0407baSopenharmony_ci////////////////////////////////////////////////////////////////////////////////// 393d0407baSopenharmony_ci#include "RgaSingleton.h" 403d0407baSopenharmony_ci 413d0407baSopenharmony_ciclass RockchipRga : public RgaSingleton<RockchipRga> { 423d0407baSopenharmony_cipublic: 433d0407baSopenharmony_ci 443d0407baSopenharmony_ci static inline RockchipRga& get() 453d0407baSopenharmony_ci { 463d0407baSopenharmony_ci return getInstance(); 473d0407baSopenharmony_ci } 483d0407baSopenharmony_ci 493d0407baSopenharmony_ci int RkRgaInit(); 503d0407baSopenharmony_ci void RkRgaDeInit(); 513d0407baSopenharmony_ci void RkRgaGetContext(void **ctx); 523d0407baSopenharmony_ci int RkRgaAllocBuffer(int drm_fd /* input */, bo_t *bo_info, 533d0407baSopenharmony_ci int width, int height, int bpp, int flags); 543d0407baSopenharmony_ci int RkRgaFreeBuffer(int drm_fd /* input */, bo_t *bo_info); 553d0407baSopenharmony_ci int RkRgaGetAllocBuffer(bo_t *bo_info, int width, int height, int bpp); 563d0407baSopenharmony_ci int RkRgaGetAllocBufferExt(bo_t *bo_info, int width, int height, int bpp, int flags); 573d0407baSopenharmony_ci int RkRgaGetAllocBufferCache(bo_t *bo_info, int width, int height, int bpp); 583d0407baSopenharmony_ci int RkRgaGetMmap(bo_t *bo_info); 593d0407baSopenharmony_ci int RkRgaUnmap(bo_t *bo_info); 603d0407baSopenharmony_ci int RkRgaFree(bo_t *bo_info); 613d0407baSopenharmony_ci int RkRgaGetBufferFd(bo_t *bo_info, int *fd); 623d0407baSopenharmony_ci int RkRgaBlit(rga_info *src, rga_info *dst, rga_info *src1); 633d0407baSopenharmony_ci int RkRgaCollorFill(rga_info *dst); 643d0407baSopenharmony_ci int RkRgaCollorPalette(rga_info *src, rga_info *dst, rga_info *lut); 653d0407baSopenharmony_ci int RkRgaFlush(); 663d0407baSopenharmony_ci void RkRgaSetLogOnceFlag(int log) 673d0407baSopenharmony_ci { 683d0407baSopenharmony_ci mLogOnce = log; 693d0407baSopenharmony_ci } 703d0407baSopenharmony_ci void RkRgaSetAlwaysLogFlag(bool log) 713d0407baSopenharmony_ci { 723d0407baSopenharmony_ci mLogAlways = log; 733d0407baSopenharmony_ci } 743d0407baSopenharmony_ci void RkRgaLogOutRgaReq(struct rga_req rgaReg); 753d0407baSopenharmony_ci int RkRgaLogOutUserPara(rga_info *rgaInfo); 763d0407baSopenharmony_ci inline bool RkRgaIsReady() 773d0407baSopenharmony_ci { 783d0407baSopenharmony_ci return mSupportRga; 793d0407baSopenharmony_ci } 803d0407baSopenharmony_ci 813d0407baSopenharmony_ci RockchipRga(); 823d0407baSopenharmony_ci ~RockchipRga(); 833d0407baSopenharmony_ciprivate: 843d0407baSopenharmony_ci bool mSupportRga; 853d0407baSopenharmony_ci int mLogOnce; 863d0407baSopenharmony_ci int mLogAlways; 873d0407baSopenharmony_ci void *mContext; 883d0407baSopenharmony_ci 893d0407baSopenharmony_ci friend class RgaSingleton<RockchipRga>; 903d0407baSopenharmony_ci}; 913d0407baSopenharmony_ci#endif 92