OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [MW_0_8_9PRE7/] [mw/] [src/] [drivers/] [fb.h] - Diff between revs 674 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 674 Rev 1765
/*
/*
 * Copyright (c) 1999, 2000, 2001 Greg Haerr <greg@censoft.com>
 * Copyright (c) 1999, 2000, 2001 Greg Haerr <greg@censoft.com>
 *
 *
 * Framebuffer drivers header file for Microwindows Screen Drivers
 * Framebuffer drivers header file for Microwindows Screen Drivers
 */
 */
 
 
/* Linux framebuffer critical sections*/
/* Linux framebuffer critical sections*/
#if VTSWITCH
#if VTSWITCH
extern volatile int mwdrawing;
extern volatile int mwdrawing;
#define DRAWON          ++mwdrawing
#define DRAWON          ++mwdrawing
#define DRAWOFF         --mwdrawing
#define DRAWOFF         --mwdrawing
#else
#else
#define DRAWON
#define DRAWON
#define DRAWOFF
#define DRAWOFF
#endif
#endif
 
 
typedef unsigned char *         ADDR8;
typedef unsigned char *         ADDR8;
typedef unsigned short *        ADDR16;
typedef unsigned short *        ADDR16;
typedef unsigned long *         ADDR32;
typedef unsigned long *         ADDR32;
 
 
/* ROP macro for 16 drawing modes*/
/* ROP macro for 16 drawing modes*/
#define CHECK(f,d)      
#define CHECK(f,d)      
 
 
/* applyOp w/stored dst*/
/* applyOp w/stored dst*/
#define applyOp(op, src, pdst, type)            \
#define applyOp(op, src, pdst, type)            \
{                                               \
{                                               \
        type d = (pdst);                        \
        type d = (pdst);                        \
        switch (op) {                           \
        switch (op) {                           \
        case MWMODE_XOR:                        \
        case MWMODE_XOR:                        \
                *d ^= (src);                    \
                *d ^= (src);                    \
                CHECK("XOR", *d);               \
                CHECK("XOR", *d);               \
                break;                          \
                break;                          \
        case MWMODE_AND:                        \
        case MWMODE_AND:                        \
                *d &= (src);                    \
                *d &= (src);                    \
                CHECK("AND", *d);               \
                CHECK("AND", *d);               \
                break;                          \
                break;                          \
        case MWMODE_OR:                         \
        case MWMODE_OR:                         \
                *d |= (src);                    \
                *d |= (src);                    \
                CHECK("OR", *d);                \
                CHECK("OR", *d);                \
                break;                          \
                break;                          \
        case MWMODE_CLEAR:                      \
        case MWMODE_CLEAR:                      \
                *d = 0;                          \
                *d = 0;                          \
                CHECK("CLEAR", *d);             \
                CHECK("CLEAR", *d);             \
                break;                          \
                break;                          \
        case MWMODE_SETTO1:                     \
        case MWMODE_SETTO1:                     \
                *d = -1;                        \
                *d = -1;                        \
                CHECK("SETTO1", *d);            \
                CHECK("SETTO1", *d);            \
                break;                          \
                break;                          \
        case MWMODE_EQUIV:                      \
        case MWMODE_EQUIV:                      \
                *d = ~(*d ^ (src));             \
                *d = ~(*d ^ (src));             \
                CHECK("EQUIV", *d);             \
                CHECK("EQUIV", *d);             \
                break;                          \
                break;                          \
        case MWMODE_NOR:                        \
        case MWMODE_NOR:                        \
                *d = ~(*d | (src));             \
                *d = ~(*d | (src));             \
                CHECK("NOR", *d);               \
                CHECK("NOR", *d);               \
                break;                          \
                break;                          \
        case MWMODE_NAND:                       \
        case MWMODE_NAND:                       \
                *d = ~(*d & (src));             \
                *d = ~(*d & (src));             \
                CHECK("NAND", *d);              \
                CHECK("NAND", *d);              \
                break;                          \
                break;                          \
        case MWMODE_INVERT:                     \
        case MWMODE_INVERT:                     \
                *d = ~*d;                       \
                *d = ~*d;                       \
                CHECK("INVERT", *d);            \
                CHECK("INVERT", *d);            \
                break;                          \
                break;                          \
        case MWMODE_COPYINVERTED:               \
        case MWMODE_COPYINVERTED:               \
                *d = ~(src);                    \
                *d = ~(src);                    \
                CHECK("COPYINVERTED", *d);      \
                CHECK("COPYINVERTED", *d);      \
                break;                          \
                break;                          \
        case MWMODE_ORINVERTED:                 \
        case MWMODE_ORINVERTED:                 \
                *d |= ~(src);                   \
                *d |= ~(src);                   \
                CHECK("ORINVERTED", *d);        \
                CHECK("ORINVERTED", *d);        \
                break;                          \
                break;                          \
        case MWMODE_ANDINVERTED:                \
        case MWMODE_ANDINVERTED:                \
                *d &= ~(src);                   \
                *d &= ~(src);                   \
                CHECK("ANDINVERTED", *d);       \
                CHECK("ANDINVERTED", *d);       \
                break;                          \
                break;                          \
        case MWMODE_ORREVERSE:                  \
        case MWMODE_ORREVERSE:                  \
                *d = ~*d | (src);               \
                *d = ~*d | (src);               \
                CHECK("ORREVERSE", *d);         \
                CHECK("ORREVERSE", *d);         \
                break;                          \
                break;                          \
        case MWMODE_ANDREVERSE:                 \
        case MWMODE_ANDREVERSE:                 \
                *d = ~*d & (src);               \
                *d = ~*d & (src);               \
                CHECK("ANDREVERSE", *d);        \
                CHECK("ANDREVERSE", *d);        \
                break;                          \
                break;                          \
        case MWMODE_COPY:                       \
        case MWMODE_COPY:                       \
                *d = (src);                     \
                *d = (src);                     \
                CHECK("COPY", *d);              \
                CHECK("COPY", *d);              \
                break;                          \
                break;                          \
        case MWMODE_NOOP:                       \
        case MWMODE_NOOP:                       \
                CHECK("NOOP", *d);              \
                CHECK("NOOP", *d);              \
                break;                          \
                break;                          \
        }                                       \
        }                                       \
}
}
 
 
/* applyOp w/return value*/
/* applyOp w/return value*/
#define DEFINE_applyOpR                         \
#define DEFINE_applyOpR                         \
static inline int applyOpR(op, src, dst)        \
static inline int applyOpR(op, src, dst)        \
{                                               \
{                                               \
        switch (op) {                           \
        switch (op) {                           \
        case MWMODE_XOR:                        \
        case MWMODE_XOR:                        \
                return (src) ^ (dst);           \
                return (src) ^ (dst);           \
        case MWMODE_AND:                        \
        case MWMODE_AND:                        \
                return (src) & (dst);           \
                return (src) & (dst);           \
        case MWMODE_OR:                         \
        case MWMODE_OR:                         \
                return (src) | (dst);           \
                return (src) | (dst);           \
        case MWMODE_CLEAR:                      \
        case MWMODE_CLEAR:                      \
                return 0;                        \
                return 0;                        \
        case MWMODE_SETTO1:                     \
        case MWMODE_SETTO1:                     \
                return -1;                      \
                return -1;                      \
        case MWMODE_EQUIV:                      \
        case MWMODE_EQUIV:                      \
                return ~((src) ^ (dst));        \
                return ~((src) ^ (dst));        \
        case MWMODE_NOR:                        \
        case MWMODE_NOR:                        \
                return ~((src) | (dst));        \
                return ~((src) | (dst));        \
        case MWMODE_NAND:                       \
        case MWMODE_NAND:                       \
                return ~((src) & (dst));        \
                return ~((src) & (dst));        \
        case MWMODE_INVERT:                     \
        case MWMODE_INVERT:                     \
                return ~(dst);                  \
                return ~(dst);                  \
        case MWMODE_COPYINVERTED:               \
        case MWMODE_COPYINVERTED:               \
                return ~(src);                  \
                return ~(src);                  \
        case MWMODE_ORINVERTED:                 \
        case MWMODE_ORINVERTED:                 \
                return ~(src) | (dst);          \
                return ~(src) | (dst);          \
        case MWMODE_ANDINVERTED:                \
        case MWMODE_ANDINVERTED:                \
                return ~(src) & (dst);          \
                return ~(src) & (dst);          \
        case MWMODE_ORREVERSE:                  \
        case MWMODE_ORREVERSE:                  \
                return (src) | ~(dst);          \
                return (src) | ~(dst);          \
        case MWMODE_ANDREVERSE:                 \
        case MWMODE_ANDREVERSE:                 \
                return (src) & ~(dst);          \
                return (src) & ~(dst);          \
        case MWMODE_COPY:                       \
        case MWMODE_COPY:                       \
                return (src);                   \
                return (src);                   \
        case MWMODE_NOOP:                       \
        case MWMODE_NOOP:                       \
        default:                                \
        default:                                \
                return (dst);                   \
                return (dst);                   \
        }                                       \
        }                                       \
}
}
 
 
/* global vars*/
/* global vars*/
extern int      gr_mode;        /* temp kluge*/
extern int      gr_mode;        /* temp kluge*/
 
 
/* entry points*/
/* entry points*/
/* scr_fb.c*/
/* scr_fb.c*/
void ioctl_getpalette(int start, int len, short *red, short *green,short *blue);
void ioctl_getpalette(int start, int len, short *red, short *green,short *blue);
void ioctl_setpalette(int start, int len, short *red, short *green,short *blue);
void ioctl_setpalette(int start, int len, short *red, short *green,short *blue);
 
 
/* genmem.c*/
/* genmem.c*/
void    gen_fillrect(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2,
void    gen_fillrect(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2,
                MWPIXELVAL c);
                MWPIXELVAL c);
MWBOOL  set_subdriver(PSD psd, PSUBDRIVER subdriver, MWBOOL init);
MWBOOL  set_subdriver(PSD psd, PSUBDRIVER subdriver, MWBOOL init);
void    get_subdriver(PSD psd, PSUBDRIVER subdriver);
void    get_subdriver(PSD psd, PSUBDRIVER subdriver);
 
 
/* fb.c*/
/* fb.c*/
PSUBDRIVER select_fb_subdriver(PSD psd);
PSUBDRIVER select_fb_subdriver(PSD psd);
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.