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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美伦理视频网站| 亚洲免费色视频| 久久久不卡影院| 中文字幕第一区综合| 中文字幕在线不卡| 美女高潮久久久| 日本视频在线一区| 国产成人av电影在线| 欧美优质美女网站| 精品成人一区二区| 一区二区三区在线观看欧美| 精品一区免费av| 在线精品国精品国产尤物884a| 精品久久久久99| 亚洲成av人片在线观看| 高清在线不卡av| 91精品国产综合久久精品 | 激情都市一区二区| 91国偷自产一区二区三区成为亚洲经典 | 亚洲一区在线看| 国产麻豆精品theporn| 欧美三级一区二区| 日韩美女精品在线| 另类小说综合欧美亚洲| 欧美亚洲综合色| 国产精品久久久久久福利一牛影视| 免费看欧美美女黄的网站| 一本久道久久综合中文字幕| 久久久蜜臀国产一区二区| 性做久久久久久免费观看欧美| 成人av免费观看| 久久久亚洲午夜电影| 日本成人在线视频网站| 欧美在线免费播放| 亚洲日本在线看| 国产a区久久久| 欧美精品一区男女天堂| 视频一区二区三区中文字幕| 色综合久久中文字幕| 亚洲精品久久久久久国产精华液| av一区二区不卡| 亚洲精品中文在线影院| 高清不卡一区二区在线| 26uuu另类欧美| 激情综合五月天| 26uuu欧美| 高潮精品一区videoshd| 日韩免费视频一区| 国产福利视频一区二区三区| 成人免费在线视频| 国产成人自拍网| 精品国产髙清在线看国产毛片| 亚洲一区二区av在线| 91热门视频在线观看| 国产精品另类一区| 国产不卡在线视频| 久久亚洲精品国产精品紫薇 | 欧美成人aa大片| 全国精品久久少妇| 91精选在线观看| 成人免费观看av| 久久久亚洲精华液精华液精华液| 精彩视频一区二区三区| 精品国产乱码久久久久久久久| 麻豆国产精品777777在线| 日韩一区二区免费在线观看| 午夜精彩视频在线观看不卡| 欧美日韩免费观看一区三区| 亚洲国产aⅴ天堂久久| 欧美精品在欧美一区二区少妇| 日韩在线一区二区| 欧美一级欧美三级在线观看 | 亚洲精品成人少妇| 一本到不卡免费一区二区| 亚洲人成电影网站色mp4| 色婷婷综合久久| 亚洲一区二区视频在线观看| 欧美日韩在线三级| 香蕉久久一区二区不卡无毒影院| 4438x成人网最大色成网站| 日韩精品高清不卡| 91精品在线免费| 精品一区二区三区日韩| 久久精品人人爽人人爽| av亚洲产国偷v产偷v自拍| 有坂深雪av一区二区精品| 欧美日韩精品一区二区在线播放| 亚洲福利一区二区三区| 国产人伦精品一区二区| 久久精子c满五个校花| 欧美性生活影院| 成人精品一区二区三区中文字幕| 亚洲精品欧美激情| 久久综合色8888| 日韩欧美一区电影| 在线一区二区视频| 成人黄色综合网站| 97精品国产97久久久久久久久久久久| 在线观看av不卡| 青青草成人在线观看| 日韩精品一区国产麻豆| 国产精品夜夜嗨| 亚洲欧洲精品天堂一级| 欧美三级电影网| 日韩精品福利网| 久久人人爽爽爽人久久久| 成人av资源网站| 亚洲综合免费观看高清完整版| 欧美高清视频www夜色资源网| 精品制服美女丁香| 国产精品国产馆在线真实露脸| 欧美色精品在线视频| 国产专区综合网| 亚洲人成7777| 日韩欧美综合在线| 成人黄色在线视频| 亚洲国产日韩a在线播放性色| 欧美成人高清电影在线| 99国产精品99久久久久久| 日日嗨av一区二区三区四区| 国产亚洲欧美色| 欧美日韩一区二区电影| 久久精品国产久精国产爱| 亚洲丝袜美腿综合| 91精品国产综合久久精品性色| 91精品国产综合久久婷婷香蕉| 国产又黄又大久久| 亚洲永久精品大片| 久久久久久久性| 精品女同一区二区| 欧美自拍偷拍一区| 精品久久人人做人人爽| 亚洲欧洲综合另类| 精品国产一区二区国模嫣然| 色老头久久综合| 国产精品中文字幕日韩精品| 亚洲线精品一区二区三区八戒| 88在线观看91蜜桃国自产| 国产高清视频一区| 日本91福利区| 最新国产の精品合集bt伙计| 精品久久久久久综合日本欧美| 欧美亚洲综合久久| 99久久久久久| 国产麻豆一精品一av一免费| 亚洲h精品动漫在线观看| 亚洲一区二区三区不卡国产欧美| 视频精品一区二区| 日韩欧美一区二区三区在线| 中文无字幕一区二区三区| 一区二区欧美在线观看| 七七婷婷婷婷精品国产| 91美女片黄在线观看| 日韩精品一区二区三区三区免费| 亚洲欧美偷拍另类a∨色屁股| 日本美女一区二区| 91视视频在线直接观看在线看网页在线看| 国产日韩视频一区二区三区| 欧美日韩国产系列| 不卡视频在线看| 国产一区在线观看视频| 日本三级亚洲精品| 一区二区三区蜜桃| 中文字幕一区二区三区在线观看 | 欧美成人精品3d动漫h| 欧美日韩一区二区在线观看| 99精品视频在线播放观看| 国产曰批免费观看久久久| 免费观看在线综合| 午夜欧美视频在线观看| 亚洲久本草在线中文字幕| 国产精品欧美久久久久一区二区| 久久嫩草精品久久久精品一| 欧美电影免费观看高清完整版| 欧美日韩国产小视频| 欧美性猛交一区二区三区精品| 91在线观看地址| av在线不卡电影| 成人午夜av影视| 国产高清久久久| 国产另类ts人妖一区二区| 久久不见久久见免费视频1| 婷婷亚洲久悠悠色悠在线播放 | 中文字幕av在线一区二区三区| 欧美电影精品一区二区| 日韩视频一区二区三区| 日韩三级视频在线观看| 日韩女同互慰一区二区| 日韩一区二区麻豆国产| 日韩免费电影一区| 日韩欧美国产综合| 欧美精品一区二区三区四区| 欧美精品一区在线观看| 国产亚洲va综合人人澡精品| 国产日本欧美一区二区| 国产精品久久久久永久免费观看| 国产精品国产自产拍高清av王其| 国产精品久久看| 亚洲精品乱码久久久久久| 亚洲风情在线资源站|