⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gfx_common.h

📁 IBM source for pallas/vulcan/vesta
💻 H
字号:
//vulcan/drv/include/gfx/gfx_common.h/*----------------------------------------------------------------------------+||       This source code has been made available to you by IBM on an AS-IS|       basis.  Anyone receiving this source is licensed under IBM|       copyrights to use it in any way he or she deems fit, including|       copying it, modifying it, compiling it, and redistributing it either|       with or without modifications.  No license under IBM patents or|       patent applications is to be implied by the copyright license.||       Any user of this software should understand that IBM cannot provide|       technical support for this software and will not be responsible for|       any consequences resulting from the use of this software.||       Any person who transfers this source code or any derivative work|       must include the IBM copyright notice, this paragraph, and the|       preceding two paragraphs in the transferred software.||       COPYRIGHT   I B M   CORPORATION 1998|       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M+----------------------------------------------------------------------------*/////Comment: //  commonly used gfx definations//Revision Log:   //  Oct/29/2001                          Created by YYD#ifndef  _DRV_INCLUDE_GFX_GFX_COMMON_H_INC_#define  _DRV_INCLUDE_GFX_GFX_COMMON_H_INC_#include "os/os-types.h"/* 2D engine Graphics pixel formats */#define G2D_CLUT1             (0x1)#define G2D_CLUT8             (0x2)#define G2D_YCBCR422          (0x3) #define G2D_YCBCR420          (0x4) #define G2D_AYCBCR422         (0x5) #define G2D_AYCBCR420         (0x6) #define G2D_ARGB_8888         (0x7)             // for compatibility only#define GFX_SURFACE_MAX_WIDTH      (0x3fc)      // 255*4#define GFX_SURFACE_MAX_HEIGHT     (0x3fe)      // 255*4#define GFX_SURFACE_LINE_JUSTIFY   (4)          // 4 bytes also pixels#define GFX_SURFACE_ADDR_JUSTIFY   (0x200)       // for OSD it's 512, for G2D and Scaller, it not required#define G2D_SURFACE_MAX_WIDTH      (0x3fc)      // G2D only#define G2D_SURFACE_MAX_HEIGHT     (0x3fe)      // G2D only#define OSD_SURFACE_MAX_WIDTH      (0x3fc)      // OSD only, incompatible with G2D#define OSD_SURFACE_MAX_HEIGHT     (0x3fc)      // OSD only, incompatible with G2D#define SCALER_SURFACE_MAX_WIDTH   (0x3fc)       // Scaler limitations only, incompatible with GFX#define SCALER_SURFACE_MAX_HEIGHT  (0x3fe)      // surface_compatibility flags#define GFX_COMP_OSDGFX            (0x01000)#define GFX_COMP_OSDCUR            (0x02000)#define GFX_COMP_OSDIMG            (0x04000)#define GFX_COMP_OSDALL            (0x07000)#define GFX_COMP_G2DS              (0x10000)#define GFX_COMP_G2DD              (0x20000)#define GFX_COMP_G2D               (0x30000)#define GFX_COMP_SCALERS           (0x40000)#define GFX_COMP_SCALERD           (0x80000)#define GFX_COMP_SCALER            (0xC0000)#define GFX_SURFACE_MAX_SUBPLANES   (3)#define GFX_SURFACE_ONE_SUBPLANE	(0x100000)#define GFX_SURFACE_TWO_SUBPLANE	(0x200000)#define GFX_SURFACE_THREE_SUBPLANE	(0x300000)// surface defines // 0xf00 (GFX pixel format) + 0x3f (OSD pixel format) + compatibilities + numplanes// CLUT surface //  mode number is//  rgb, pix_res , high_color, color_res#define GFX_SURFACE_CLUT8BPP_AYCBCR      ((G2D_CLUT8 << 8)  +0x02 + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT8BPPP_AYCBCR     (                   0x06 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT4BPP_AYCBCR      (                   0x00 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT4BPPP_AYCBCR     (                   0x04 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT2BPP_AYCBCR      (                   0x01 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT2BPPP_AYCBCR     (                   0x05 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT8BPP_ARGB       ((G2D_CLUT8 << 8)  +0x0a + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT8BPPP_ARGB      (                   0x0e + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT4BPP_ARGB       (                   0x08 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT4BPPP_ARGB      (                   0x0c + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT2BPP_ARGB       (                   0x09 + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CLUT2BPPP_ARGB      (                   0x0d + GFX_COMP_OSDGFX  + GFX_COMP_OSDIMG + GFX_SURFACE_ONE_SUBPLANE)// cursor plane only#define GFX_SURFACE_CURSOR4BPP_YCBCR    (                   0x00 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR4BPPP_YCBCR   (                   0x04 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR2BPP_YCBCR    (                   0x01 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR2BPPP_YCBCR   (                   0x05 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE) #define GFX_SURFACE_CURSOR4BPP_RGB      (                   0x08 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR4BPPP_RGB     (                   0x0c + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR2BPP_RGB      (                   0x09 + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)#define GFX_SURFACE_CURSOR2BPPP_RGB     (                   0x0d + GFX_COMP_OSDCUR  + GFX_SURFACE_ONE_SUBPLANE)// multi plane 8 bit YUV surface#define GFX_SURFACE_YCBCR_422_888        ((G2D_YCBCR422<<8) +0x03 + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX + GFX_COMP_OSDIMG + GFX_SURFACE_TWO_SUBPLANE)  /* requires 2 buffers (Y, CBCR) */#define GFX_SURFACE_YCBCR_420_888        ((G2D_YCBCR420<<8) +0x07 + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX + GFX_COMP_OSDIMG + GFX_SURFACE_TWO_SUBPLANE)  /* requires 2 buffers (Y, CBCR) */#define GFX_SURFACE_AYCBCR_422_8888      ((G2D_AYCBCR422<<8)+0x33 + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX + GFX_SURFACE_THREE_SUBPLANE)  /* requires 3 buffers (Y, CBCR, A) */#define GFX_SURFACE_AYCBCR_420_8888      ((G2D_AYCBCR420<<8)+0x77 + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_COMP_OSDGFX + GFX_SURFACE_THREE_SUBPLANE)  /* requires 3 buffers (Y, CBCR, A) */// only for g2d and scaler, not for display    #define GFX_SURFACE_ARGB_8888            ((G2D_ARGB_8888<<8)+0xff + GFX_COMP_G2D + GFX_COMP_SCALER + GFX_SURFACE_ONE_SUBPLANE)// 8 bit raw plane, only for g2d and scaler, not for display, actually is clut8 without parm and palette#define GFX_SURFACE_RAW8BPP              ((G2D_CLUT8<<8)    +0xfe + GFX_COMP_G2D + GFX_COMP_SCALERS  +  GFX_SURFACE_ONE_SUBPLANE)// 1 bit raw plane, only for g2d, not for display, actually is clut1 without parm and palette#define GFX_SURFACE_RAW1BPP              ((G2D_CLUT1<<8)    +0xfe + GFX_COMP_G2D +                   +  GFX_SURFACE_ONE_SUBPLANE)// get plane attributes#define GET_OSD_SURFACE_DATA_TYPE(a)  ((a)&0x77)	        // two 3 bits for osd_plane data type#define GET_GFX_SURFACE_DATA_TYPE(a)  (((a)&0xf00)>>8)	    // 4 bits for gfx_plane data type#define GET_GFX_SURFACE_CONFIG(a)     ((a)&0xff000)         // which plane can use this config#define GET_GFX_SURFACE_SUBPLANES(a)  (((a)&0x300000)>>20)  // get the number of buffers needed#define IS_SURFACE_OSD_COMP(a)        (((a)&GFX_COMP_OSDALL) != 0)      // check if it is OSD compatible#define IS_SURFACE_G2D_COMP(a)        (((a)&0xf00) != 0)                // check if it is G2D compatible#define IS_SURFACE_CURSOR_COMP(a)     (((a)&GFX_COMP_OSDCUR) != 0)      // check if it is OSD cursor compatible#define IS_OSD_SURFACE_YUV(a)         (((a)&0x08) == 0)     // check if it is YUV config#define IS_OSD_SURFACE_CLUT(a)        (((a)&0x03) != 3)     // check if it is clut config#define IS_GFX_SURFACE_YUV(a)         (((a)&0x08) == 0)     // check if it is YUV config#define IS_GFX_SURFACE_CLUT(a)        (((a)&0x03) != 3)     // check if it is clut config//  -------------------  PACKED -----------------------#ifdef __GNUC__#pragma pack(1)#endiftypedef struct __GFX_PALETTE_STRUCTURE__{    BYTE    a;      // alpha, 5 level  0%,  25%, 50%, 75%, 100%    BYTE    r;      // red / Y    BYTE    g;      // green / Cb    BYTE    b;      // blue / Cr} GFX_PALETTE_T;typedef struct __GFX_PIXEL_INFO_T_STRUCTURE__{    USHORT uNumbits;    USHORT uOffset;} GFX_PIXEL_INFO_T;typedef struct __GFX_RECT_T_STRUCTURE__{    UINT x, y;   // where x, y is upper left corner    UINT w, h;   //       w, h is width and height} GFX_NORM_RECT_T;typedef struct __GFX_RECT_NORM_T_STRUCTURE__{    INT32 x1, y1;    // where x1, y1 must be upper left corner     INT32 x2, y2;    //       x2, y2 must be lwer right corner} GFX_RECT_T;#ifdef __GNUC__#pragma pack()#endif//  -------------------  UNPACKED ---------------------typedef enum{    GFX_VDEV_OSDCUR    = 0,    GFX_VDEV_OSDGFX    = 1,    GFX_VDEV_OSDIMG    = 2,    GFX_VDEV_NULL      = -1} GFX_VISUAL_DEVICE_ID_T;#define GFX_NUMOF_VISUAL_DEVICES     (3)typedef enum{    GFX_CURSOR_NO_PEEP_NO_STEADY = 0,        // peep = 0, steady = 0    GFX_CURSOR_NO_PEEP_STEADY    = 1,        // peep = 0, steady = 1    GFX_CURSOR_PEEP_NO_STEADY    = 2,        // peep = 1, steady = 0    GFX_CURSOR_PEEP_STEADY       = 3,        // peep = 1, steady = 1} GFX_CURSOR_ATTRIBUTE_T;typedef enum{    GFX_DEST_ALPHA_FROM_GIVEN=0,        // alpha from given value    GFX_DEST_ALPHA_FROM_SOURCE=1,       // alpha from source pixel    GFX_DEST_ALPHA_FROM_DESTINATION=2,  // alpha from destination pixel    GFX_DEST_ALPHA_FROM_BLEND=3         // alpha from blended source and destination} GFX_DEST_ALPHA_SELECT_T;typedef enum{    GFX_BLEND_ALPHA_FROM_GIVEN=0,       // 0000 Alpha from Destination Control     GFX_BLEND_ALPHA_FROM_SOURCE=1,      // 0001 Alpha from source pixel    GFX_BLEND_ALPHA_FROM_DESTINATION=2, // 0010 Alpha from destination pixel    // the following is for AdvancedBlend    GFX_BLEND_ALPHA_FROM_PATTERN=3,     // 0011 Alpha from pattern buffer    // I did not implement these in software in vulcan driver    GFX_BLEND_SRC_OVER_DEST=5,          // 0101 Source OVER destination    GFX_BLEND_DEST_OVER_SRC=6,          // 0110 Destination OVER source    GFX_BLEND_SRC_PLUS_DEST=7,          // 0111 Source PLUS destination    GFX_BLEND_FADE_DESTINATION=8,       // 1000 FADE destination    GFX_BLEND_DEST_IN_SRC=9,            // 1001 Destination IN source    GFX_BLEND_SRC_IN_DEST=10,           // 1010 Source IN destination    GFX_BLEND_OPAQUE_DEST=11,           // 1011 OPAQUE destination    GFX_BLEND_DEST_HELD_SRC=13,         // 1101 Destination HELD OUT BY source    GFX_BLEND_SRC_HELD_DEST=14,         // 1110 Source HELD OUT BY destination    GFX_BLEND_DARKEN_DEST=15,           // 1111 DARKEN destination} GFX_BLEND_SELECT_T;// I did not implement these in softwaretypedef enum{    GFX_ROP_DISABLE= -1,// disable    GFX_ROP_CLEAR=0,    // 0000 Clear all bits to zero    GFX_ROP_NOR=1,      // 0001 COMPL(source) AND COMPL(destination)    GFX_ROP_AND_INV=2,  // 0010 COMPL(source) AND destination    GFX_ROP_COPY_INV=3, // 0011 COMPL(source)    GFX_ROP_AND_REV=4,  // 0100 Source AND COMPL(destination)    GFX_ROP_INVERT=5,   // 0101 COMPL(destination)    GFX_ROP_XOR=6,      // 0110 Source XOR destination    GFX_ROP_NAND=7,     // 0111 COMPL(source) OR COMPL(destination)    GFX_ROP_AND=8,      // 1000 Source AND destination    GFX_ROP_EQUIV=9,    // 1001 COMPL(source) XOR destination    GFX_ROP_NOOP=10,    // 1010 Destination    GFX_ROP_OR_INV=11,  // 1011 COMPL(source) OR destination    GFX_ROP_COPY=12,    // 1100 Source    GFX_ROP_OR_REV=13,  // 1101 Source OR COMPL(destination)    GFX_ROP_OR=14,      // 1110 Source OR destination    GFX_ROP_SET=15,     // 1111 Set all bits to one} GFX_ROP_CODE_T;// I did not implement these in softwaretypedef enum{    // each source pixel will be compared to the colorKeyCompareValue    GFX_COLORKEY_COMPARE_SOURCE      = 0,    // each destination pixel will be compared to the colorKeyCompareValue    GFX_COLORKEY_COMPARE_DESTINATION = 1,} GFX_COLORKEY_COMPARE_T;// I did not implement these in softwaretypedef enum{    //  replacement color will replace the source     //  pixel value when the  colorKey Compare Value matches     //  the pixel value    GFX_COLORKEY_OUTPUT_REPLACE     = 0,    //  destination pixel will be keeped    //  when the  colorKey Compare Value matches     //  the pixel value    GFX_COLORKEY_OUTPUT_KEEP = 1,} GFX_COLORKEY_OUTPUT_T;// I did not implement these in softwaretypedef struct {    UINT32  colorKeyCompareValue;    GFX_COLORKEY_COMPARE_T colorKeyCompareSelect;    GFX_COLORKEY_OUTPUT_T colorKeyOutputSelect;    UINT32 replacementColor; } COLOR_KEY_SELECT; typedef struct {    GFX_DEST_ALPHA_SELECT_T storedAlphaSelect;    BYTE globalAlphaValue; /* required for global or if alphaformat is MONO */} ALPHA_SELECT; typedef struct {    GFX_DEST_ALPHA_SELECT_T storedAlphaSelect;    BYTE globalAlphaValue;    GFX_BLEND_SELECT_T blendInputSelect;} ALPHA_BLEND_SELECT;#endif // _DRV_INCLUDE_GFX_GFX_COMMON_H_INC_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -