~ubuntu-branches/ubuntu/hardy/kvm/hardy-backports

« back to all changes in this revision

Viewing changes to vgabios/tests/lfbprof/lfbprof.h

  • Committer: Bazaar Package Importer
  • Author(s): Soren Hansen
  • Date: 2008-01-03 10:39:25 UTC
  • mfrom: (1.1.16 upstream)
  • Revision ID: james.westby@ubuntu.com-20080103103925-8480u7sq2646hvbh
Tags: 1:59+dfsg-0ubuntu1
* New upstream release
* Build with alsa support (cherry pick from 57+dfsg-2)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
*
 
3
*                   VBE 2.0 Linear Framebuffer Profiler
 
4
*                    By Kendall Bennett and Brian Hook
 
5
*
 
6
* Filename:     LFBPROF.H
 
7
* Language:     ANSI C
 
8
* Environment:  Watcom C/C++ 10.0a with DOS4GW
 
9
*
 
10
* Description:  Header file for the LFBPROF.C progam.
 
11
*
 
12
****************************************************************************/
 
13
 
 
14
#ifndef __LFBPROF_H
 
15
#define __LFBPROF_H
 
16
 
 
17
/*---------------------- Macros and type definitions ----------------------*/
 
18
 
 
19
#pragma pack(1)
 
20
 
 
21
/* SuperVGA information block */
 
22
 
 
23
typedef struct {
 
24
    char    VESASignature[4];       /* 'VESA' 4 byte signature          */
 
25
    short   VESAVersion;            /* VBE version number               */
 
26
    long    OemStringPtr;           /* Pointer to OEM string            */
 
27
    long    Capabilities;           /* Capabilities of video card       */
 
28
    long    VideoModePtr;           /* Pointer to supported modes       */
 
29
    short   TotalMemory;            /* Number of 64kb memory blocks     */
 
30
 
 
31
    /* VBE 2.0 extensions */
 
32
 
 
33
    short   OemSoftwareRev;         /* OEM Software revision number     */
 
34
    long    OemVendorNamePtr;       /* Pointer to Vendor Name string    */
 
35
    long    OemProductNamePtr;      /* Pointer to Product Name string   */
 
36
    long    OemProductRevPtr;       /* Pointer to Product Revision str  */
 
37
    char    reserved[222];          /* Pad to 256 byte block size       */
 
38
    char    OemDATA[256];           /* Scratch pad for OEM data         */
 
39
    } VBE_vgaInfo;
 
40
 
 
41
/* SuperVGA mode information block */
 
42
 
 
43
typedef struct {
 
44
    short   ModeAttributes;         /* Mode attributes                  */
 
45
    char    WinAAttributes;         /* Window A attributes              */
 
46
    char    WinBAttributes;         /* Window B attributes              */
 
47
    short   WinGranularity;         /* Window granularity in k          */
 
48
    short   WinSize;                /* Window size in k                 */
 
49
    short   WinASegment;            /* Window A segment                 */
 
50
    short   WinBSegment;            /* Window B segment                 */
 
51
    long    WinFuncPtr;             /* Pointer to window function       */
 
52
    short   BytesPerScanLine;       /* Bytes per scanline               */
 
53
    short   XResolution;            /* Horizontal resolution            */
 
54
    short   YResolution;            /* Vertical resolution              */
 
55
    char    XCharSize;              /* Character cell width             */
 
56
    char    YCharSize;              /* Character cell height            */
 
57
    char    NumberOfPlanes;         /* Number of memory planes          */
 
58
    char    BitsPerPixel;           /* Bits per pixel                   */
 
59
    char    NumberOfBanks;          /* Number of CGA style banks        */
 
60
    char    MemoryModel;            /* Memory model type                */
 
61
    char    BankSize;               /* Size of CGA style banks          */
 
62
    char    NumberOfImagePages;     /* Number of images pages           */
 
63
    char    res1;                   /* Reserved                         */
 
64
    char    RedMaskSize;            /* Size of direct color red mask    */
 
65
    char    RedFieldPosition;       /* Bit posn of lsb of red mask      */
 
66
    char    GreenMaskSize;          /* Size of direct color green mask  */
 
67
    char    GreenFieldPosition;     /* Bit posn of lsb of green mask    */
 
68
    char    BlueMaskSize;           /* Size of direct color blue mask   */
 
69
    char    BlueFieldPosition;      /* Bit posn of lsb of blue mask     */
 
70
    char    RsvdMaskSize;           /* Size of direct color res mask    */
 
71
    char    RsvdFieldPosition;      /* Bit posn of lsb of res mask      */
 
72
    char    DirectColorModeInfo;    /* Direct color mode attributes     */
 
73
 
 
74
    /* VBE 2.0 extensions */
 
75
 
 
76
    long    PhysBasePtr;            /* Physical address for linear buf  */
 
77
    long    OffScreenMemOffset;     /* Pointer to start of offscreen mem*/
 
78
    short   OffScreenMemSize;       /* Amount of offscreen mem in 1K's  */
 
79
    char    res2[206];              /* Pad to 256 byte block size       */
 
80
    } VBE_modeInfo;
 
81
 
 
82
#define vbeMemPK        4           /* Packed Pixel memory model        */
 
83
#define vbeUseLFB       0x4000      /* Enable linear framebuffer mode   */
 
84
 
 
85
/* Flags for the mode attributes returned by VBE_getModeInfo. If
 
86
 * vbeMdNonBanked is set to 1 and vbeMdLinear is also set to 1, then only
 
87
 * the linear framebuffer mode is available.
 
88
 */
 
89
 
 
90
#define vbeMdAvailable  0x0001      /* Video mode is available          */
 
91
#define vbeMdColorMode  0x0008      /* Mode is a color video mode       */
 
92
#define vbeMdGraphMode  0x0010      /* Mode is a graphics mode          */
 
93
#define vbeMdNonBanked  0x0040      /* Banked mode is not supported     */
 
94
#define vbeMdLinear     0x0080      /* Linear mode supported            */
 
95
 
 
96
/* Structures for issuing real mode interrupts with DPMI */
 
97
 
 
98
struct _RMWORDREGS {
 
99
    unsigned short ax, bx, cx, dx, si, di, cflag;
 
100
    };
 
101
 
 
102
struct _RMBYTEREGS {
 
103
    unsigned char   al, ah, bl, bh, cl, ch, dl, dh;
 
104
    };
 
105
 
 
106
typedef union {
 
107
    struct  _RMWORDREGS x;
 
108
    struct  _RMBYTEREGS h;
 
109
    } RMREGS;
 
110
 
 
111
typedef struct {
 
112
    unsigned short  es;
 
113
    unsigned short  cs;
 
114
    unsigned short  ss;
 
115
    unsigned short  ds;
 
116
    } RMSREGS;
 
117
 
 
118
/* Inline assembler block fill/move routines */
 
119
 
 
120
void LfbMemset(void *p,int c,int n);
 
121
#pragma aux LfbMemset =             \
 
122
        "shr    ecx,2"                  \
 
123
        "xor    eax,eax"                \
 
124
        "mov    al,bl"                  \
 
125
        "shl    ebx,8"                  \
 
126
        "or     ax,bx"                  \
 
127
        "mov    ebx,eax"                \
 
128
        "shl    ebx,16"                 \
 
129
        "or     eax,ebx"                \
 
130
        "rep    stosd"                  \
 
131
        parm [edi] [ebx] [ecx];
 
132
 
 
133
void LfbMemcpy(void *dst,void *src,int n);
 
134
#pragma aux LfbMemcpy =             \
 
135
        "shr    ecx,2"                  \
 
136
        "rep    movsd"                  \
 
137
        parm [edi] [esi] [ecx];
 
138
 
 
139
/* Map a real mode pointer into address space */
 
140
 
 
141
#define LfbMapRealPointer(p)    (void*)(((unsigned)((p)  & 0xFFFF0000) >> 12) + ((p) & 0xFFFF))
 
142
 
 
143
/* Get the current timer tick count */
 
144
 
 
145
#define LfbGetTicks()       *((long*)0x46C)
 
146
 
 
147
#pragma pack()
 
148
 
 
149
#endif  /* __LFBPROF_H */