1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef DISPLAY_COMMON_FUZZER_H 17094332d3Sopenharmony_ci#define DISPLAY_COMMON_FUZZER_H 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#include "v1_0/include/idisplay_buffer.h" 20094332d3Sopenharmony_ci#include "v1_2/include/idisplay_composer_interface.h" 21094332d3Sopenharmony_ci#include "v1_2/display_composer_type.h" 22094332d3Sopenharmony_ci#include "v1_0/display_buffer_type.h" 23094332d3Sopenharmony_ci#include "buffer_handle.h" 24094332d3Sopenharmony_ci#include "hdf_log.h" 25094332d3Sopenharmony_ci 26094332d3Sopenharmony_cinamespace OHOS { 27094332d3Sopenharmony_ciusing namespace OHOS::HDI::Display::Buffer::V1_0; 28094332d3Sopenharmony_ciusing namespace OHOS::HDI::Display::Composer::V1_0; 29094332d3Sopenharmony_ci 30094332d3Sopenharmony_ciconst size_t THRESHOLD = 10; 31094332d3Sopenharmony_ciconst size_t STR_LEN = 10; 32094332d3Sopenharmony_ciconst uint32_t PARAM_VOIDPTR_LEN = 10; 33094332d3Sopenharmony_ciconst int32_t ALPHA_VALUE_RANGE = 256; // ranging from 0 to 255 34094332d3Sopenharmony_ciconst uint32_t WIDTH = 128; 35094332d3Sopenharmony_ciconst uint32_t HEIGHT = 128; 36094332d3Sopenharmony_ciconst uint64_t RANDOM_BOOL = 2; 37094332d3Sopenharmony_ci 38094332d3Sopenharmony_ciconst PixelFormat CONVERT_TABLE_FORMAT[] = { 39094332d3Sopenharmony_ci PIXEL_FMT_CLUT8, PIXEL_FMT_CLUT1, 40094332d3Sopenharmony_ci PIXEL_FMT_CLUT4, PIXEL_FMT_RGB_565, 41094332d3Sopenharmony_ci PIXEL_FMT_RGBA_5658, PIXEL_FMT_RGBX_4444, 42094332d3Sopenharmony_ci PIXEL_FMT_RGBA_4444, PIXEL_FMT_RGB_444, 43094332d3Sopenharmony_ci PIXEL_FMT_RGBX_5551, PIXEL_FMT_RGBA_5551, 44094332d3Sopenharmony_ci PIXEL_FMT_RGB_555, PIXEL_FMT_RGBX_8888, 45094332d3Sopenharmony_ci PIXEL_FMT_RGBA_8888, PIXEL_FMT_RGB_888, 46094332d3Sopenharmony_ci PIXEL_FMT_BGR_565, PIXEL_FMT_BGRX_4444, 47094332d3Sopenharmony_ci PIXEL_FMT_BGRA_4444, PIXEL_FMT_BGRX_5551, 48094332d3Sopenharmony_ci PIXEL_FMT_BGRA_5551, PIXEL_FMT_BGRX_8888, 49094332d3Sopenharmony_ci PIXEL_FMT_BGRA_8888, PIXEL_FMT_YUV_422_I, 50094332d3Sopenharmony_ci PIXEL_FMT_YCBCR_422_SP, PIXEL_FMT_YCRCB_422_SP, 51094332d3Sopenharmony_ci PIXEL_FMT_YCBCR_420_SP, PIXEL_FMT_YCRCB_420_SP, 52094332d3Sopenharmony_ci PIXEL_FMT_YCBCR_422_P, PIXEL_FMT_YCRCB_422_P, 53094332d3Sopenharmony_ci PIXEL_FMT_YCBCR_420_P, PIXEL_FMT_YCRCB_420_P, 54094332d3Sopenharmony_ci PIXEL_FMT_YUYV_422_PKG, PIXEL_FMT_UYVY_422_PKG, 55094332d3Sopenharmony_ci PIXEL_FMT_YVYU_422_PKG, PIXEL_FMT_VYUY_422_PKG, 56094332d3Sopenharmony_ci PIXEL_FMT_VENDER_MASK, PIXEL_FMT_BUTT, 57094332d3Sopenharmony_ci}; 58094332d3Sopenharmony_ci 59094332d3Sopenharmony_ciconst BufferUsage CONVERT_TABLE_USAGE[] = { 60094332d3Sopenharmony_ci HBM_USE_CPU_READ, HBM_USE_CPU_WRITE, 61094332d3Sopenharmony_ci HBM_USE_MEM_MMZ, HBM_USE_MEM_DMA, 62094332d3Sopenharmony_ci HBM_USE_MEM_SHARE, HBM_USE_MEM_MMZ_CACHE, 63094332d3Sopenharmony_ci HBM_USE_MEM_FB, HBM_USE_ASSIGN_SIZE, 64094332d3Sopenharmony_ci HBM_USE_HW_RENDER, HBM_USE_HW_TEXTURE, 65094332d3Sopenharmony_ci HBM_USE_HW_COMPOSER, HBM_USE_PROTECTED, 66094332d3Sopenharmony_ci HBM_USE_CAMERA_READ, HBM_USE_CAMERA_WRITE, 67094332d3Sopenharmony_ci HBM_USE_VIDEO_ENCODER, HBM_USE_VIDEO_DECODER, 68094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI0, HBM_USE_VENDOR_PRI1, 69094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI2, HBM_USE_VENDOR_PRI3, 70094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI4, HBM_USE_VENDOR_PRI5, 71094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI6, HBM_USE_VENDOR_PRI7, 72094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI8, HBM_USE_VENDOR_PRI9, 73094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI10, HBM_USE_VENDOR_PRI11, 74094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI12, HBM_USE_VENDOR_PRI13, 75094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI14, HBM_USE_VENDOR_PRI15, 76094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI16, HBM_USE_VENDOR_PRI17, 77094332d3Sopenharmony_ci HBM_USE_VENDOR_PRI18, HBM_USE_VENDOR_PRI19, 78094332d3Sopenharmony_ci}; 79094332d3Sopenharmony_ci 80094332d3Sopenharmony_ci 81094332d3Sopenharmony_ciconst LayerType CONVERT_TABLE_LAYER_TYPE[] = { 82094332d3Sopenharmony_ci LAYER_TYPE_GRAPHIC, LAYER_TYPE_OVERLAY, 83094332d3Sopenharmony_ci LAYER_TYPE_SDIEBAND, LAYER_TYPE_CURSOR, 84094332d3Sopenharmony_ci LAYER_TYPE_BUTT, 85094332d3Sopenharmony_ci}; 86094332d3Sopenharmony_ci 87094332d3Sopenharmony_ciconst Composer::V1_0::DispPowerStatus CONVERT_TABLE_POWER_STATUS[] = { 88094332d3Sopenharmony_ci POWER_STATUS_ON, POWER_STATUS_STANDBY, 89094332d3Sopenharmony_ci POWER_STATUS_SUSPEND, POWER_STATUS_OFF, 90094332d3Sopenharmony_ci POWER_STATUS_BUTT, 91094332d3Sopenharmony_ci}; 92094332d3Sopenharmony_ci 93094332d3Sopenharmony_ciconst InterfaceType CONVERT_TABLE_INTERFACE_TYPE[] = { 94094332d3Sopenharmony_ci DISP_INTF_HDMI, DISP_INTF_LCD, 95094332d3Sopenharmony_ci DISP_INTF_BT1120, DISP_INTF_BT656, 96094332d3Sopenharmony_ci DISP_INTF_YPBPR, DISP_INTF_RGB, 97094332d3Sopenharmony_ci DISP_INTF_CVBS, DISP_INTF_SVIDEO, 98094332d3Sopenharmony_ci DISP_INTF_VGA, DISP_INTF_MIPI, 99094332d3Sopenharmony_ci DISP_INTF_PANEL, DISP_INTF_BUTT, 100094332d3Sopenharmony_ci}; 101094332d3Sopenharmony_ci 102094332d3Sopenharmony_ciconst TransformType CONVERT_TABLE_ROTATE[] = { 103094332d3Sopenharmony_ci ROTATE_NONE, 104094332d3Sopenharmony_ci ROTATE_90, 105094332d3Sopenharmony_ci ROTATE_180, 106094332d3Sopenharmony_ci ROTATE_270, 107094332d3Sopenharmony_ci ROTATE_BUTT, 108094332d3Sopenharmony_ci}; 109094332d3Sopenharmony_ci 110094332d3Sopenharmony_ciconst Composer::V1_0::CompositionType CONVERT_TABLE_COMPOSITION[] = { 111094332d3Sopenharmony_ci COMPOSITION_CLIENT, 112094332d3Sopenharmony_ci COMPOSITION_DEVICE, 113094332d3Sopenharmony_ci COMPOSITION_CURSOR, 114094332d3Sopenharmony_ci COMPOSITION_VIDEO, 115094332d3Sopenharmony_ci COMPOSITION_DEVICE_CLEAR, 116094332d3Sopenharmony_ci COMPOSITION_CLIENT_CLEAR, 117094332d3Sopenharmony_ci COMPOSITION_TUNNEL, 118094332d3Sopenharmony_ci COMPOSITION_BUTT, 119094332d3Sopenharmony_ci}; 120094332d3Sopenharmony_ci 121094332d3Sopenharmony_cistatic const BlendType CONVERT_TABLE_BLEND[] = { 122094332d3Sopenharmony_ci BLEND_NONE, 123094332d3Sopenharmony_ci BLEND_CLEAR, 124094332d3Sopenharmony_ci BLEND_SRC, 125094332d3Sopenharmony_ci BLEND_SRCOVER, 126094332d3Sopenharmony_ci BLEND_DSTOVER, 127094332d3Sopenharmony_ci BLEND_SRCIN, 128094332d3Sopenharmony_ci BLEND_DSTIN, 129094332d3Sopenharmony_ci BLEND_SRCOUT, 130094332d3Sopenharmony_ci BLEND_DSTOUT, 131094332d3Sopenharmony_ci BLEND_SRCATOP, 132094332d3Sopenharmony_ci BLEND_DSTATOP, 133094332d3Sopenharmony_ci BLEND_ADD, 134094332d3Sopenharmony_ci BLEND_XOR, 135094332d3Sopenharmony_ci BLEND_DST, 136094332d3Sopenharmony_ci BLEND_AKS, 137094332d3Sopenharmony_ci BLEND_AKD, 138094332d3Sopenharmony_ci BLEND_BUTT, 139094332d3Sopenharmony_ci}; 140094332d3Sopenharmony_ci 141094332d3Sopenharmony_cistatic const MaskInfo CONVERT_TABLE_MASK[] = { 142094332d3Sopenharmony_ci LAYER_NORAML, 143094332d3Sopenharmony_ci LAYER_HBM_SYNC, 144094332d3Sopenharmony_ci}; 145094332d3Sopenharmony_ci 146094332d3Sopenharmony_citemplate<class T> 147094332d3Sopenharmony_ciuint32_t GetArrLength(T& arr) 148094332d3Sopenharmony_ci{ 149094332d3Sopenharmony_ci if (arr == nullptr) { 150094332d3Sopenharmony_ci HDF_LOGE("%{public}s: The array length is equal to 0", __func__); 151094332d3Sopenharmony_ci return 0; 152094332d3Sopenharmony_ci } 153094332d3Sopenharmony_ci return sizeof(arr) / sizeof(arr[0]); 154094332d3Sopenharmony_ci} 155094332d3Sopenharmony_ci 156094332d3Sopenharmony_cibool GetRandBoolValue(uint32_t data) 157094332d3Sopenharmony_ci{ 158094332d3Sopenharmony_ci return data % RANDOM_BOOL == 0; 159094332d3Sopenharmony_ci} 160094332d3Sopenharmony_ci} // OHOS 161094332d3Sopenharmony_ci#endif // DISPLAY_COMMON_FUZZER_H 162