亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scrdrv.c

?? Genode FX is a composition of hardware and software components that enable the creation of fully fl
?? C
字號:
/* * \brief   DOpE screen driver module for Charon's FPGA board * \date    2005-02-04 * \author  Norman Feske <norman.feske@genode-labs.com> *//* * Copyright (C) 2005-2008 Norman Feske <norman.feske@genode-labs.com> * Genode Labs, Feske & Helmuth Systementwicklung GbR * * This file is part of the DOpE-embedded package, which is distributed * under the terms of the GNU General Public License version 2. *//** * General includes */#include <signal.h>//#include <stdio.h>/** * FPGA includes */#include "xparameters.h"#include "xio.h"#ifdef __PPC__#include "xcache_l.h"#endif /* __PPC__ *//** * Local includes */#include "dopestd.h"#include "scrdrv.h"#include "clipping.h"static long scr_width, scr_height, scr_depth;static void *scr_adr, *buf_adr;static long curr_mx = 100,curr_my = 100;static struct clipping_services *clip;int init_scrdrv(struct dope_services *d);static void draw_cursor(short *data,long x,long y){	static int i,j;	short *dst = (short *)buf_adr + y*scr_width + x;	short *d;	short *s = data;	int w = *(data++), h = *(data++);	int linelen = w;	if (x >= scr_width) return;	if (y >= scr_height) return;	if (x >= scr_width  - 16) linelen = scr_width - x;	if (y >= scr_height - 16) h = scr_height - y;	for (j = 0; j < h; j++) {		d = dst; s = data;		for (i = 0; i < linelen; i++) {			if (*s) *d = *s;			d++; s++;		}		dst  += scr_width;		data += w;	}}static short bg_buffer[20][16];static void save_background(long x, long y){	short *src = (short *)buf_adr + y*scr_width + x;	short *dst = (short *)&bg_buffer;	short *s;	static int i, j;	int h = 16;	if (y >= scr_height - 16) h = scr_height - y;	for (j = 0; j < h; j++) {		s = src;		for (i = 0; i < 16; i++) {			*(dst++) = *(s++);		}		src += scr_width;	}}static void restore_background(long x, long y){	short *src = (short *)&bg_buffer;	short *dst = (short *)buf_adr + y*scr_width + x;	short *d;	static int i, j;	int h = 16;	if (y >= scr_height - 16) h = scr_height - y;	for (j = 0; j < h; j++) {		d = dst;		for (i = 0; i < 16; i++) {			*(d++) = *(src++);		}		dst += scr_width;	}}extern short smallmouse_trp;extern short bigmouse_trp;/*********************** ** Service functions ** ***********************//** * Set up screen */static long set_screen(long width, long height, long depth){	int scr_size;	int baseaddr = XPAR_PLB_NPI_VGA_CONTROLLER_0_BASEADDR;	int scr_adr_int;	/****************************************	 * 25 MHz Pixel clock: 640x480 at 60 Hz *	 ****************************************///	scr_width  = 640;//	scr_height = 480;//	scr_depth  = 16;////	scr_size = scr_width*(scr_height + 16)*scr_depth/8 + 64;//	scr_adr  = malloc(scr_size);//	buf_adr  = malloc(scr_size);////	/* align screen address to a 128-byte-aligned address *///	scr_adr_int = (int) scr_adr;//	scr_adr_int += 128;//	scr_adr_int &= 0xFFFFFF80;//	scr_adr = (void *)scr_adr_int;////	/* set frame buffer address *///	*((volatile u32 **)(baseaddr)) = scr_adr;////	/* set screen resolution to 640x480 *///	*((volatile u32 *)(baseaddr + 0x14)) = (scr_height << 16) + scr_width;////	/* set frame buffer size in bytes *///	*((volatile u32 *)(baseaddr + 0x18)) = scr_height * scr_width * 2;////	/* set hsync start and hsync end *///	*((volatile u32 *)(baseaddr + 0x1C)) = ((640+28+94) << 16) + 640+28;////	/* set vsync start and vsync end *///	*((volatile u32 *)(baseaddr + 0x20)) = (491 << 16) + 490;////	/* set x and y max *///	*((volatile u32 *)(baseaddr + 0x24)) = (524 << 16) + 792;////	/* set bgnd low and bgnd high *///	*((volatile u32 *)(baseaddr + 0x28)) = (505 << 16) + 490;////	/* set normal resolution and enable frame buffer *///	*((volatile u32 *)(baseaddr + 0x10)) = 4;//	/*****************************************	 * 50 MHz Pixel clock: 800x600 at 72 Hz  *	 *****************************************///	scr_width  = 800;//	scr_height = 600;//	scr_depth  = 16;////	scr_size = scr_width*(scr_height + 16)*scr_depth/8 + 128;//	scr_adr  = malloc(scr_size);//	buf_adr  = malloc(scr_size);////	/* align screen address to a 128-byte-aligned address *///	scr_adr_int = (int) scr_adr;//	scr_adr_int += 128;//	scr_adr_int &= 0xFFFFFF80;//	scr_adr = (void *)scr_adr_int;////	/* set frame buffer address *///	*((volatile u32 **)(baseaddr)) = scr_adr;////	/* set screen resolution to 800x600 *///	*((volatile u32 *)(baseaddr + 0x14)) = (scr_height << 16) + scr_width;////	/* set frame buffer size in bytes *///	*((volatile u32 *)(baseaddr + 0x18)) = scr_height * scr_width * 2;////	/* set hsync start and hsync end *///	*((volatile u32 *)(baseaddr + 0x1C)) = ((800+56+120) << 16) + 800+56;////	/* set vsync start and vsync end *///	*((volatile u32 *)(baseaddr + 0x20)) = (641 << 16) + 636;////	/* set x and y max *///	*((volatile u32 *)(baseaddr + 0x24)) = ((600+66-1) << 16) + 800+239;////	/* set bgnd low and bgnd high *///	*((volatile u32 *)(baseaddr + 0x28)) = (660 << 16) + 630;////	/* set normal resolution and enable frame buffer *///	*((volatile u32 *)(baseaddr + 0x10)) = 4;//	/*****************************************	 * 75 MHz Pixel clock: 1024x768 at 60 Hz *	 *****************************************/	scr_width  = 1024;	scr_height = 768;	scr_depth  = 16;	scr_size = scr_width*(scr_height + 16)*scr_depth/8 + 128;	scr_adr  = malloc(scr_size);	buf_adr  = malloc(scr_size);	/* align screen address to a 128-byte-aligned address */	scr_adr_int = (int) scr_adr;	scr_adr_int += 128;	scr_adr_int &= 0xFFFFFF80;	scr_adr = (void *)scr_adr_int;	/* set frame buffer address */	*((volatile u32 **)(baseaddr)) = scr_adr;	/* set screen resolution to 1024x768 */	*((volatile u32 *)(baseaddr + 0x14)) = (scr_height << 16) + scr_width;	/* set frame buffer size in bytes */	*((volatile u32 *)(baseaddr + 0x18)) = scr_height * scr_width * 2;	/* set hsync start and hsync end */	*((volatile u32 *)(baseaddr + 0x1C)) = ((1024+16+224) << 16) + 640+16;	/* set vsync start and vsync end */	*((volatile u32 *)(baseaddr + 0x20)) = (783 << 16) + 780;	/* set x and y max */	*((volatile u32 *)(baseaddr + 0x24)) = (858 << 16) + 1455;	/* set bgnd low and bgnd high */	*((volatile u32 *)(baseaddr + 0x28)) = (850 << 16) + 779;	/* set normal resolution and enable frame buffer */	*((volatile u32 *)(baseaddr + 0x10)) = 4;//	printf("ScrDrv(set_screen): scr_adr=%p, buf_adr=%p\n", scr_adr, buf_adr);//	printf("Baseaddr=%p\n", baseaddr);//	printf("Framebuffer_addr=%p\n", *((u32 *)(baseaddr)));//	printf("resolution=%p\n", *((u32 **)(baseaddr+0x14)));//	printf("Frame Buffer size=%p\n", *((u32 **)(baseaddr+0x18)));//	printf("hsync size=%p\n", *((u32 **)(baseaddr+0x1C)));//	printf("vsync size=%p\n", *((u32 **)(baseaddr+0x20)));//	printf("x/y max=%p\n", *((u32 **)(baseaddr+0x24)));//	printf("bgnd high/low=%p\n", *((u32 **)(baseaddr+0x28)));//	printf("flags=%p\n", *((u32 **)(baseaddr+0x10)));	return 1;}/** * Deinitialisation */static void restore_screen(void){	/* nothing to restore - sdl is too good */}/** * Provide information about the screen */static long  get_scr_width  (void) {return scr_width;}static long  get_scr_height (void) {return scr_height;}static long  get_scr_depth  (void) {return scr_depth;}static void *get_scr_adr    (void) {return scr_adr;}static void *get_buf_adr    (void) {return buf_adr;}/** * Make changes on the screen visible (buffered output) */static void update_area(long x1, long y1, long x2, long y2){	long dx;	long dy;	long v;	long i, j;	u16 *src, *dst;	u32 *s, *d;	int cursor_visible = 0;	if ((curr_mx < x2) && (curr_mx + 16 > x1)	 && (curr_my < y2) && (curr_my + 16 > y1)) {		save_background(curr_mx, curr_my);		draw_cursor(&bigmouse_trp, curr_mx, curr_my);		cursor_visible = 1;	}	x1 &= ~3;	x2 = (x2 | 3) + 1;	/* apply clipping to specified area */	if (x1 < (v = clip->get_x1())) x1 = v;	if (y1 < (v = clip->get_y1())) y1 = v;	if (x2 > (v = clip->get_x2())) x2 = v;	if (y2 > (v = clip->get_y2())) y2 = v;	dx = x2 - x1;	dy = y2 - y1;	if (dx >= 0 && dy >= 0) {		/* determine offset of left top corner of the area to update */		src = (u16 *)buf_adr + y1*scr_width + x1;		dst = (u16 *)scr_adr + y1*scr_width + x1;		for (j = dy + 1; j--; ) {			/* copy line */			d = (u32 *)dst; s = (u32 *)src;			for (i = (dx>>1) + 2; i--; ) *(d++) = *(s++);			src += scr_width;			dst += scr_width;		}	}	if (cursor_visible)		restore_background(curr_mx, curr_my);	XCache_FlushDCacheRange((int)scr_adr + y1*scr_width + x1, 2*scr_width*scr_height);}/** * Set mouse cursor to the specified position */static void set_mouse_pos(long mx, long my){	int old_mx = curr_mx, old_my = curr_my;	/* check if position really changed */	if ((curr_mx == mx) && (curr_my == my)) return;	curr_mx = mx;	curr_my = my;	update_area(curr_mx, curr_my, curr_mx + 16, curr_my + 16);	update_area(old_mx,  old_my,  old_mx  + 16, old_my  + 16);}/** * Set new mouse shape */static void set_mouse_shape(void *new_shape){	/* not built in yet... */}/************************************** ** Service structure of this module ** **************************************/static struct scrdrv_services services = {	set_screen,	restore_screen,	get_scr_width,	get_scr_height,	get_scr_depth,	get_scr_adr,	get_buf_adr,	update_area,	set_mouse_pos,	set_mouse_shape,};/************************ ** Module entry point ** ************************/int init_scrdrv(struct dope_services *d){	/* define frame buffer address */	clip = d->get_module("Clipping 1.0");	d->register_module("ScreenDriver 1.0", &services);	return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满嫩嫩电影| 国内成+人亚洲+欧美+综合在线| 欧美成人一区二区三区在线观看 | 欧美一区二区三区婷婷月色| 色偷偷一区二区三区| 日产欧产美韩系列久久99| 午夜婷婷国产麻豆精品| 婷婷激情综合网| 热久久久久久久| 激情av综合网| 成人免费毛片片v| jlzzjlzz国产精品久久| 色av综合在线| 91精品国产高清一区二区三区| 制服视频三区第一页精品| 精品三级在线观看| 国产丝袜在线精品| 亚洲欧洲99久久| 亚洲制服丝袜av| 日韩av网站免费在线| 国产精品自产自拍| 色综合天天综合给合国产| 欧美私模裸体表演在线观看| 欧美一二区视频| 国产精品女主播av| 亚洲成av人**亚洲成av**| 九色综合狠狠综合久久| 不卡的av电影在线观看| 欧美视频一区二区三区在线观看 | 精品美女在线播放| 国产色一区二区| 亚洲精品中文在线观看| 麻豆91在线看| 91天堂素人约啪| 欧美一区中文字幕| 国产精品久久福利| 玖玖九九国产精品| 欧美在线你懂的| 精品久久久久久久久久久院品网| 亚洲欧洲三级电影| 久久99精品国产| 91碰在线视频| 久久综合色综合88| 亚洲国产三级在线| 粉嫩13p一区二区三区| 欧美精品色综合| 中文字幕一区二区三区不卡在线| 日韩国产精品久久| 91网站在线播放| 久久久久一区二区三区四区| 亚洲成人资源在线| 99视频一区二区| 精品成人私密视频| 亚洲成国产人片在线观看| 懂色中文一区二区在线播放| 欧美一级欧美三级| 亚洲一区二区三区四区在线免费观看 | 五月综合激情网| av午夜一区麻豆| 久久久久久久久久久久电影 | 91麻豆自制传媒国产之光| 欧美一级理论性理论a| 亚洲精品国产品国语在线app| 国产综合一区二区| 欧美伦理视频网站| 亚洲成人动漫一区| 在线观看日韩av先锋影音电影院| 国产精品天干天干在线综合| 国内精品久久久久影院一蜜桃| 欧美顶级少妇做爰| 亚洲国产精品一区二区尤物区| 北岛玲一区二区三区四区| 国产视频一区不卡| 国产福利一区在线| 国产日韩欧美麻豆| 成人午夜激情视频| 国产精品久久久久影院| 成人免费电影视频| 亚洲天堂中文字幕| 色呦呦网站一区| 亚洲精品ww久久久久久p站| 色狠狠色狠狠综合| 亚洲一本大道在线| 欧美疯狂做受xxxx富婆| 日日夜夜免费精品| 日韩精品一区二区在线| 国产在线一区二区综合免费视频| 欧美成人一区二区三区片免费| 国产综合色视频| 久久久国际精品| 成人久久18免费网站麻豆| 成人欧美一区二区三区| 色激情天天射综合网| 亚洲成人中文在线| 精品久久久久久久久久久久包黑料| 国内精品久久久久影院薰衣草| 欧美激情在线看| 色婷婷亚洲一区二区三区| 亚洲成av人综合在线观看| 日韩欧美激情一区| www.欧美精品一二区| 亚洲综合久久av| 精品人伦一区二区色婷婷| 北条麻妃一区二区三区| 亚洲国产cao| 久久免费午夜影院| 91免费精品国自产拍在线不卡| 偷窥国产亚洲免费视频| 国产亚洲欧洲997久久综合| 日本乱码高清不卡字幕| 麻豆一区二区三| 亚洲免费大片在线观看| 精品日韩欧美一区二区| 91热门视频在线观看| 久久精品国产一区二区| 中文字幕日韩av资源站| 日韩精品一区二区三区在线播放 | 欧美中文字幕一区二区三区亚洲| 日韩黄色在线观看| |精品福利一区二区三区| 欧美一区二区视频在线观看2022 | 亚洲 欧美综合在线网络| 久久久综合精品| 欧美午夜寂寞影院| 国产高清不卡一区| 秋霞电影一区二区| 亚洲精品成人悠悠色影视| 久久精品在这里| 欧美不卡一区二区三区| 欧美性猛片xxxx免费看久爱| 国产一区二区在线影院| 午夜精品在线看| 亚洲美女视频一区| 国产精品天天看| 久久综合色天天久久综合图片| 9191国产精品| 在线免费观看日本欧美| www.欧美精品一二区| 粉嫩aⅴ一区二区三区四区五区| 蜜臀va亚洲va欧美va天堂| 亚洲综合丝袜美腿| 亚洲精品精品亚洲| 中文字幕一区二区三区四区不卡| 国产三级一区二区三区| 精品处破学生在线二十三| 日韩一区二区不卡| 9191成人精品久久| 欧美一区二区在线看| 欧美一区二区三级| 欧美一级黄色大片| 欧美大片国产精品| 欧美大片顶级少妇| 精品国产亚洲在线| 久久亚洲欧美国产精品乐播| 欧美不卡在线视频| 久久久国产精品不卡| 日韩视频免费观看高清完整版在线观看| 91麻豆福利精品推荐| 色先锋aa成人| 欧美日韩aaaaa| 在线不卡a资源高清| 一区二区三区在线免费视频| 国产麻豆精品theporn| 欧美电视剧免费全集观看| 一区二区欧美视频| 欧美三级一区二区| 亚洲小说春色综合另类电影| 一区二区在线观看视频在线观看| 1024成人网色www| 日韩精品中文字幕一区二区三区| 欧美一区二区精品| 久久你懂得1024| 中文字幕在线不卡一区| 一区二区三区加勒比av| 日韩精品1区2区3区| 精品一区二区三区的国产在线播放| 久久99蜜桃精品| 成人av电影在线网| 欧美三区在线观看| 日韩你懂的在线播放| 欧美国产日本视频| 亚洲午夜av在线| 国产乱人伦精品一区二区在线观看 | 美女www一区二区| 风间由美一区二区av101| 日本黄色一区二区| 日韩欧美卡一卡二| 亚洲欧洲日韩女同| 免费高清成人在线| 成人污视频在线观看| 欧美日韩亚州综合| 欧美高清在线一区二区| 亚洲一区二区三区四区五区黄| 极品少妇xxxx精品少妇| 色琪琪一区二区三区亚洲区| 欧美xxxx老人做受| 亚洲激情第一区| 国产成人av一区二区| 欧美精品一二三| 亚洲免费观看高清完整版在线观看 |