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

📄 fbdefs.h

📁 早期freebsd实现
💻 H
字号:
/* * Copyright (c) 1992, 1993 *	The Regents of the University of California.  All rights reserved. * * This code is derived from software contributed to Berkeley by * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: $Hdr: fbdefs.h,v 4.300 91/06/09 06:33:54 root Rel41 $ SONY * *	@(#)fbdefs.h	8.1 (Berkeley) 6/11/93 */#ifndef mips#define volatile#endif#ifdef CPU_SINGLE#if defined(news3400) || defined(news3700)#define splbitmap	spl3#endif#define	FB_LOCK		lock_bitmap()#define FB_UNLOCK	unlock_bitmap()#else /* CPU_SINGLE */#undef PRE_EMPT#define PRE_EMPT#define FB_LOCK#define FB_UNLOCK#include <news3400/fb/fbsem.h> /* semaphore name */#endif /* CPU_SINGLE */#if defined(news3400) || defined(news3700)#define WB_FLUSH	MachEmptyWriteBuffer()#else#define WB_FLUSH#endif/* * macro to compute modulo * 	MOD(-1, 16) --> 15 *	DIV(-1, 16) --> -1 */#define MOD(x, d, t)	(((t)=(x)%(d))>=0?(t):(t)+(d))#define TRUNC(x, d, t)	((x)-MOD(x,d,t))#define DIV(x, d, t)	(((x)-MOD(x,d,t))/(d))/* BitsPerWord should be 2^x */#define MODWORD(x)	((x)&((BitsPerWord)-1))#define TRUNCWORD(x)	((x)-MODWORD(x))#define DIVWORD(x)	(((x)-MODWORD(x))/BitsPerWord)#define AllOnes		0xffff/* transparency */#define TRANS(t,f)	((t) ? ((f) & 0x3 | 0x4) : (f))/* *	color definitions */#define MODE_1to1	0#define MODE_1toN	1#define MODE_Nto1	2#define MODE_NtoN	3#define PARALLEL	0#define INTERNAL	1#define NODRAW		0#define DRAW		1typedef struct _mergeRopBits {	unsigned long	ca1, cx1, ca2, cx2;} mergeRopRec;extern mergeRopRec	mergeRopBits[];#define DoRop(f, s, d, r) \{  \	switch(f) {  \	case BF_0: \		(r) = 0; break;  \	case BF_SDA: \		(r) = (s)&(d); break;  \	case BF_SDIA: \		(r) = (s)&~(d); break;  \	case BF_S: \		(r) = (s); break;  \	case BF_SIDA: \		(r) = ~(s)&(d); break;  \	case BF_D: \		(r) = (d); break;  \	case BF_SDX: \		(r) = (s)^(d); break;  \	case BF_SDO: \		(r) = (s)|(d); break;  \	case BF_SDOI: \		(r) = ~((s)|(d)); break;  \	case BF_SDXI: \		(r) = ~((s)^(d)); break;  \	case BF_DI: \		(r) = ~(d); break;  \	case BF_SDIO: \		(r) = (s)|~(d); break;  \	case BF_SI: \		(r) = ~(s); break;  \	case BF_SIDO: \		(r) = ~(s)|(d); break;  \	case BF_SDAI: \		(r) = ~((s)&(d)); break;  \	case BF_1: \		(r) = 0xffffffff; break;  \	}  \}#define DoMergeRop(src, dst) \	((dst) & ((src) & _ca1 ^ _cx1) ^ ((src) & _ca2 ^ _cx2))#define DoMergeRopMask(src, dst, mask) \	((dst) & (((src) & _ca1 ^ _cx1) | ~(mask)) ^ \	(((src) & _ca2 ^ _cx2) & (mask)))#define DoMergeFill(dst)	(((dst) & (rop_and)) ^ (rop_xor))#define DoMergeFillMask(dst, mask) \	(((dst) & ((rop_and) | ~(mask))) ^ ((rop_xor) & (mask)))#define DoMultiRop(src, dst) \{ \	DoRop(funcs[0], src, dst, tmp0) \	DoRop(funcs[1], src, dst, tmp1) \	DoRop(funcs[2], src, dst, tmp2) \	DoRop(funcs[3], src, dst, tmp3) \	(dst) = tmp0 & masks[0] | tmp1 & masks[1] | \	    tmp2 & masks[2] | tmp3 & masks[3]; \}#define DoMultiRopMask(src, dst, mask) \{ \	DoRop(funcs[0], src, dst, tmp0) \	DoRop(funcs[1], src, dst, tmp1) \	DoRop(funcs[2], src, dst, tmp2) \	DoRop(funcs[3], src, dst, tmp3) \	(dst) = dst & ~(mask) | \	    (tmp0 & masks[0] | tmp1 & masks[1] | \		tmp2 & masks[2] | tmp3 & masks[3]) & mask; \}#define TypeAt(m, p)		((m)->fm_vaddr + (p) - (m)->fm_offset)#ifdef CPU_DOUBLE# define _TypeAt(m, p)		((m)->fm_addr[(p)>>CLSHIFT] + (CLOFSET&(p)))#else /* CPU_DOUBLE */# define _TypeAt(m, p)		((m)->fm_vaddr + (p) - (m)->fm_offset)#endif /* CPU_DOUBLE */#define WordAt(m, p)		(*(Word *)_TypeAt(m, p))/**	Device Dependent Structure*/#define	MAXPLANE	24struct fbdev {	struct fbdev_ops *fbbm_op;	int		type;	int		unit;	lRectangle	FrameRect;	lRectangle	VisRect;	lRectangle	CursorRect;	lRectangle	MaskRect;	lRectangle	SaveRect;	lBitmap		Krom_BM0;	lBitmap		Krom_BM1;	char *		Krom_base;	lPoint		Krom_font_extent0;	lPoint		Krom_font_extent1;	char		funcvec[MAXPLANE];	int		Mode;	int		Pmask;	unsigned int	pat;	char		func;	int		fore;	int		aux;	int		trans;	int		cache_off;	int		font_w;	int		font_h;	int		char_w;	int		char_h;	int		scr_w;	int		scr_h;	int		ch_pos;	int		ul_pos;	int		x_offset;	int		y_offset;	int		rit_m;	int		btm_m;	lRectangle	moveArea;	lPoint		size;	lPoint		hot;	char		curfuncv[MAXPLANE];	char		maskfuncv[MAXPLANE];	int		cursorSet;	int		cursorShow;	int		cursorVis;	lPoint		cursorP;	char		*rcont_base;	char		*rcont_reg;	int		fbNplane;	int		Colorwidth;	int		planemask;	int		Mono;	int		Dimmer;	int		DispVer;	unsigned short	status_flag;	unsigned short	run_flag;	char		*private;	int		hard_cursor;};#ifdef CPU_SINGLEstruct mfbdev {	char		*vram_start;	int		vram_width;};#endif /* CPU_SINGLE */struct fbdev_ops {	void	(*fb_rop_init)();	void	(*fb_rop_copy)();	void	(*fb_rop_winit)();	void	(*fb_rop_write)();	void	(*fb_rop_read)();	void	(*fb_rop_cinit)();	void	(*fb_rop_clear)();	void	(*fb_rop_vect)();	void	(*fb_rop_dot)();	void	(*fb_rop_fillscan)();	void	(*fb_rop_wait)();	void	(*fb_rop_reset)();	char 	*(*fb_Krom_addr)();	void	(*fb_init_palette)();	int	(*fb_set_palette)();	int	(*fb_get_palette)();	int	(*fb_get_pixel)();	int	(*fb_set_dimmer)();	int	(*fb_get_dimmer)();	int	(*fb_open)();	int	(*fb_close)();	int	(*fb_ioctl)();	int	(*fb_get_page)();	void	(*fb_cursor_set)();	void	(*fb_cursor_on)();	void	(*fb_cursor_off)();	void	(*fb_cursor_move)();};struct autodev {	int	type;	char	*base;	char	*reg;};struct fbdevsw {	int	num;	int	(*fb_probe)();	void	(*fb_setup)();};extern struct autodev	autodev[];extern struct fbdev	fbdev[];extern int		nfbdev;extern struct fbdev	*consfb;extern unsigned short	fb_color_pallet_def[];extern unsigned short	fb_gray_pallet_def[];/*	fb_ioctl Command	*/#define	FB_INTCHECK		1#define	FB_INTCLEAR		2#define	FB_INTENABLE		3#define	FB_STATUSCHECK		4#define FB_SETVIDEOCTL		10#define FB_GETVIDEOSTATUS	11#define FB_SETPALETTEMODE	12#define FB_GETPALETTEMODE	13#define	FB_INT_VSYNC		1#define	FB_INT_ROPDONE		2#define	FB_STATUS_ROPEXEC	4#define	FB_STATUS_ROPWAIT	8#define	FB_STATUS_ROPVSYNC	16/*	run_flag	*/#define	FB_ACTIVE		1#define	FB_WAITING		2#define	FB_DONE			4/**	Pseudo Frame Buffer *	*	unit no*	   0		Console Device and old Interface (/dev/fb)*	   1		B/W Display and New Interface	(/dev/mfb)*	   2		Color Display and New Interface	(/dev/cfb)**/#define	fbbm_rop_init(fb, func) \	(*(fb)->fbbm_op->fb_rop_init)(fb, func)#define	fbbm_rop_copy(fb, s, d, rp, wp) \	(*(fb)->fbbm_op->fb_rop_copy)(fb, s, d, rp, wp)#define	fbbm_rop_winit(fb) \	(*(fb)->fbbm_op->fb_rop_winit)(fb)#define	fbbm_rop_write(fb, map, p, width, srp, drp, wplane) \	(*(fb)->fbbm_op->fb_rop_write)(fb, map, p, width, srp, drp, wplane) #define	fbbm_rop_read(fb, map, p, width, srp, drp, rplane, wplane) \	(*(fb)->fbbm_op->fb_rop_read)(fb, map, p, width, srp, drp, rplane, wplane)#define	fbbm_rop_cinit(fb, wplane, bw) \	(*(fb)->fbbm_op->fb_rop_cinit)(fb, wplane, bw)#define	fbbm_rop_clear(fb, dr) \	(*(fb)->fbbm_op->fb_rop_clear)(fb, dr)#define	fbbm_rop_vect(fb, dr, func, forc, auxc, transp, wplane, n, p, lptn, lpf, sw) \	(*(fb)->fbbm_op->fb_rop_vect)(fb, dr, func, forc, auxc, transp, wplane, n, p, lptn, lpf, sw)#define	fbbm_rop_dot(fb, dr, func, forc, auxc, transp, wplane, n, p) \	(*(fb)->fbbm_op->fb_rop_dot)(fb, dr, func, forc, auxc, transp, wplane, n, p)#define fbbm_rop_fillscan(fb, ls, ns, clip, sw) \	(*(fb)->fbbm_op->fb_rop_fillscan)(fb, ls, ns, clip, sw)#define fbbm_Krom_addr(fb, c, sr) \	(*(fb)->fbbm_op->fb_Krom_addr)(fb, c, sr)#define fbbm_rop_wait(fb) \	(*(fb)->fbbm_op->fb_rop_wait)(fb)#define fbbm_rop_reset(fb) \	(*(fb)->fbbm_op->fb_rop_reset)(fb)#define fbbm_init_palette(fb) \	(*(fb)->fbbm_op->fb_init_palette)(fb)#define fbbm_set_palette(fb, palette) \	(*(fb)->fbbm_op->fb_set_palette)(fb, palette)#define fbbm_get_palette(fb, palette) \	(*(fb)->fbbm_op->fb_get_palette)(fb, palette)#define fbbm_get_pixel(fb, pixel) \	(*(fb)->fbbm_op->fb_get_pixel)(fb, pixel)#define fbbm_set_dimmer(fb, n) \	(*(fb)->fbbm_op->fb_set_dimmer)(fb, n)#define fbbm_get_dimmer(fb) \	(*(fb)->fbbm_op->fb_get_dimmer)(fb)#define fbbm_open(fb) \	(*(fb)->fbbm_op->fb_open)(fb)#define fbbm_close(fb) \	(*(fb)->fbbm_op->fb_close)(fb)#define fbbm_ioctl(fb, cmd, data) \	(*(fb)->fbbm_op->fb_ioctl)(fb, cmd, data)#define fbbm_get_page(fb, off) \	(*(fb)->fbbm_op->fb_get_page)(fb, off)#define fbbm_cursor_set(fb, fc, bc) \	(*(fb)->fbbm_op->fb_cursor_set)(fb, fc, bc)#define fbbm_cursor_on(fb) \	(*(fb)->fbbm_op->fb_cursor_on)(fb)#define fbbm_cursor_off(fb) \	(*(fb)->fbbm_op->fb_cursor_off)(fb)#define fbbm_cursor_move(fb) \	(*(fb)->fbbm_op->fb_cursor_move)(fb)extern unsigned short mfbstarttab16[16];extern unsigned short mfbendtab16[16];extern unsigned short mfbpartmasks16[16][16];extern unsigned int mfbstarttab32[32];extern unsigned int mfbendtab32[32];extern unsigned int mfbpartmasks32[32][32];extern void mfb_copy_area32();extern void mfb_copyinv_area32();extern void mfb_or_area32();extern void mfb_xor_area32();extern void mfb_general_area32();extern void mfb_clr_area32();extern void mfb_inv_area32();extern void mfb_set_area32();extern void mfb_copy_area16();extern void mfb_copyinv_area16();extern void mfb_or_area16();extern void mfb_xor_area16();extern void mfb_general_area16();extern void mfb_clr_area16();extern void mfb_inv_area16();extern void mfb_set_area16();extern void mfb_clrvvector32();extern void mfb_clrhvector32();extern void mfb_clrvector32();extern void mfb_invvvector32();extern void mfb_invhvector32();extern void mfb_invvector32();extern void mfb_setvvector32();extern void mfb_sethvector32();extern void mfb_setvector32();extern void mfb_point();extern void mfb_vector32();

⌨️ 快捷键说明

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