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

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

?? ncg.cpp

?? WinCE5.0BSP for Renesas SH7770
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
//  Copyright(C) Renesas Technology Corp. 1998-2005. All rights reserved.
//  Portions Copyright (c) 1997 Microsoft Corporation.
//
//  NCG Display Driver for ITS-DS7
//
//  FILE      : ncg.cpp
//  CREATED   : 2003.08.28
//  MODIFIED  : 2005.11.10
//  AUTHOR    : Renesas Technology Corp.
//  HARDWARE  : RENESAS ITS-DS7
//  HISTORY   : 
//              2003.08.28
//              - Created prototype code.
//                (based on Q2SD Display Driver for PFM-DS6C Ver.3.1.0)
//              2003.11.18
//              - Corrected pixel format.
//              2004.03.01
//              - Changed the initial setting value of DU-DSMR. CDE disable.
//              2004.09.02
//              - Changed the initial setting value of DU-DSMR. DIPM = CSYNC.
//              - Changed the way of setting up display timings.
//              2005.09.20
//              - Modified to configure primary surface format from registry.
//              2005.11.10
//              - Modified SetRegisters to support RGB1555 pixel format.
//

#include "precomp.h"
#include "palette.h"  // for 8Bpp we use the natural palette

#include <nkintr.h>
#include "oalintr.h"

// Exported event, to allow application waiting without stalling
// other DirectDraw calls.
#define EVENT_VERTICALBLANK_EXTERNAL	(TEXT("EVENT_DDVERTICALBLANKRG"))

HANDLE g_hVBlankExternal;
HANDLE g_hBltDoneExternal;

// string constant to display driver version and display mode
TCHAR* g_szModeString; // set in DrvEnableDriver

// display mode structure
ModeInit NCGMode[NUMDISPMODES];

// register and memory address, interrupt number
DWORD g_dwVideoMemoryAddress  = NCG_FBBASE;
DWORD g_dwVideoMemorySize     = NCG_FBSIZE;
DWORD g_dwDURegisterAddress   = NCGDU_REGBASE;
DWORD g_dwInterruptNumber     = SYSINTR_DU - SYSINTR_FIRMWARE;
DWORD g_dwIntrThreadPriority  = 130;

// These globals are set later.
DWORD g_dwReservedVideoMemorySize;

//DWORD g_dwFrameBufferBase;
DWORD g_dwFrameBufferOffset;
DWORD g_dwFrameBufferSize;

//DWORD g_dwCursorBufferBase;
DWORD g_dwCursorBufferOffset;
DWORD g_dwCursorBufferSize = CURSOR_BYTES;

// surface list
NCGSurf*	g_pNCGSurfList = NULL;

INSTANTIATE_PALETTE;

// The dpCurSettings structure
// 0:ERROR, 1:WARNING, 2:PERF, 3:TEMP, 4:ENTER, 5:INIT, 6:BLT_HI, 7:BLT_LO,
// 8:CREATE, 9:FLIP, 10:LINE, 11:HW, 12:POLY, 13:CURSOR
INSTANTIATE_GPE_ZONES(0x0003,"DDI Driver","unused1","unused2"); // Start with Errors and Warnings.

DWORD gCursorData[CURSOR_BYTES / 4];
DWORD gCursorMask[CURSOR_BYTES / 4];
DWORD gxHot;
DWORD gyHot;

void StartIntrThread_DU(NCG *pNCG);

static GPE *pGPE = (GPE *)NULL;

// Main entry point for a GPE-compliant driver
GPE *GetGPE()
{
	if( !pGPE )
        pGPE = new NCG();
    return pGPE;
}


NCG::NCG()
{
    int     n;

    m_pDURegs = NULL;

    RETAILMSG(1, (TEXT("%s %s built on %s\r\n"),
        SZDRIVERNAME, SZVERSION, SZBUILDDATE));

    /* virtual address allocation for DU registers */
    m_pDURegs = (volatile unsigned long *)
            VirtualAlloc(0, NCGDU_REGSIZE, MEM_RESERVE, PAGE_NOACCESS);
    if ( m_pDURegs == NULL ) {
        ERRORMSG(1, (TEXT("NCG: VirtualAlloc (DU register) failed.\r\n")));
        goto ALLOC_ERROR;
    }

    /* virtual address mapping for DU registers */
    if ( !VirtualCopy( (LPVOID)m_pDURegs, (LPVOID)NCGDU_REGBASE,
            NCGDU_REGSIZE, PAGE_READWRITE|PAGE_NOCACHE) ) {
        ERRORMSG(1, (TEXT("NCG: VirtualCopy (DU register) failed.\r\n")));
        goto ALLOC_ERROR;
    }

	/* Plane n */
	m_pDUPnRegs[0] = m_pDURegs + DU_P1;
	m_pDUPnRegs[1] = m_pDURegs + DU_P2;
	m_pDUPnRegs[2] = m_pDURegs + DU_P3;
	m_pDUPnRegs[3] = m_pDURegs + DU_P4;
	m_pDUPnRegs[4] = m_pDURegs + DU_P5;
	m_pDUPnRegs[5] = m_pDURegs + DU_P6;

	/* Color Palette n */
	m_pDUCPnRegs[0] = m_pDURegs + DU_CP1;
	m_pDUCPnRegs[1] = m_pDURegs + DU_CP2;
	m_pDUCPnRegs[2] = m_pDURegs + DU_CP3;
	m_pDUCPnRegs[3] = m_pDURegs + DU_CP4;

	DEBUGMSG(1, (TEXT("NCG: VideoMemory Address = 0x%08x, Size = 0x%08x\r\n"),
		g_dwVideoMemoryAddress, g_dwVideoMemorySize));

    m_nVideoMemorySize = g_dwVideoMemorySize;
    m_nLAWPhysical = g_dwVideoMemoryAddress;

    /* virtual address mapping for total video memory */
    m_pLAW = (volatile unsigned char *)
            VirtualAlloc(0, m_nVideoMemorySize, MEM_RESERVE, PAGE_NOACCESS );
    if (m_pLAW == NULL) {
        ERRORMSG(1, (TEXT("NCG: VirtualAlloc (frame memory) failed.\r\n")));
        goto ALLOC_ERROR;
        return;
    }

    /* user video memory mapping */
    if ( !VirtualCopy((LPVOID)m_pLAW, (LPVOID)m_nLAWPhysical, 
            m_nVideoMemorySize, PAGE_READWRITE|PAGE_NOCACHE) ) {
        ERRORMSG(1, (TEXT("NCG: VirtualCopy (frame memory) failed.\r\n")));
        goto ALLOC_ERROR;
        return;
    }

    /* Internal notification event creation */
    m_hVBlank =
        CreateEvent(NULL, TRUE, FALSE, NULL); // manual reset
    if (m_hVBlank == NULL) {
        RETAILMSG(1, (TEXT("Event creation failed. (vertical blank)\r\n")));
        goto EVENT_ERROR;
    }

    /* External notification event creation */
    g_hVBlankExternal =
        CreateEvent(NULL, TRUE, FALSE, EVENT_VERTICALBLANK_EXTERNAL); // manual reset
    if (g_hVBlankExternal == NULL) {
        RETAILMSG(1, (TEXT("Event creation failed. (external vertical blank)\r\n")));
        goto EVENT_ERROR;
    }

    /* Interrupt event creation */
    m_hIntrEvent_DU = CreateEvent(NULL, FALSE, FALSE, NULL);
    if (m_hIntrEvent_DU == NULL) {
        RETAILMSG(1, (TEXT("Event creation failed. (interrupt)\r\n")));
        goto EVENT_ERROR;
    }

    /* Initialization for interrupt service thread */
    m_dwIntrId_DU = SYSINTR_FIRMWARE + g_dwInterruptNumber;

    /* Interrupt initialization */
    if (!InterruptInitialize(m_dwIntrId_DU, m_hIntrEvent_DU, NULL, NULL)) {
        RETAILMSG(1, (TEXT("Interrupt initialization failed.\r\n")));
        goto EVENT_ERROR;
    }

    /* Interrupt thread creation */
    m_hIntrThread_DU = CreateThread(NULL, 0, 
                        (LPTHREAD_START_ROUTINE)StartIntrThread_DU, this, 0, NULL);
    if (m_hIntrThread_DU == NULL) {
        RETAILMSG(1, (TEXT("Interrupt thread creation failed.\r\n")));
        goto EVENT_ERROR;
    }

    /* Thread priority */
    CeSetThreadPriority(m_hIntrThread_DU, g_dwIntrThreadPriority);
    CeSetThreadPriority(GetCurrentThread(), 247);
    // check thread priority
    DEBUGMSG(GPE_ZONE_INIT,
//    RETAILMSG(1,
        (TEXT("NCG: Intr (0x%08x) : Thread Priority = %d\r\n"), 
        m_hIntrThread_DU, CeGetThreadPriority(m_hIntrThread_DU)));
    DEBUGMSG(GPE_ZONE_INIT,
//    RETAILMSG(1,
        (TEXT("NCG: Main (0x%08x) : Thread Priority = %d\r\n"), 
        GetCurrentThread(), CeGetThreadPriority(GetCurrentThread())));

    /* set some parameters */
	m_CursorRect.left = (NCGMode[0].gpeModeEx.modeInfo.width - CURSOR_XSIZE) >> 1;
	m_CursorRect.right = m_CursorRect.left + CURSOR_XSIZE;
	m_CursorRect.top = (NCGMode[0].gpeModeEx.modeInfo.height - CURSOR_YSIZE) >> 1;
	m_CursorRect.bottom = m_CursorRect.top + CURSOR_YSIZE;
    gxHot = gyHot = 0;

	for (n = 0; n < NCGDU_MAXPLANES; n++) {
		m_pVisiblePlane[n] = NULL;
		m_bFlippingPlane[n] = FALSE;
	}

    /* Set some parameters for cursor (mouse pointer) drawing. */
    memset (gCursorMask, 0xFF, sizeof(gCursorMask)); // blank pattern
    m_bCursorFlag = FALSE; // Initially, cursor is not displayed.

    return;


EVENT_ERROR:
    return;

ALLOC_ERROR:
	if (m_pDURegs)
        VirtualFree((PVOID)m_pDURegs, 0, MEM_RELEASE);
	if (m_pLAW)
        VirtualFree((PVOID)m_pLAW, 0, MEM_RELEASE);
    return;
}



void NCG::SetRegisters(int nModeId)
{
    DEBUGMSG(GPE_ZONE_INIT,
        (TEXT("NCG: Entering SetRegisters...\r\n")));

	/* DU */
	m_pDURegs[DU_DSYSR] = 0x00000200;	/* DRES=1, DEN=0 */
	m_pDURegs[DU_DSMR ] = 0x03001000;	/* DIPM = CSYNC, CSPM = HSYNC, CDE disable */
	m_pDURegs[DU_DSRCR] = DSRCR_ALL;
	m_pDURegs[DU_DIER ] = 0x00000000;
	m_pDURegs[DU_CPCR ] = 0x00000000;
	m_pDURegs[DU_DPPR ] = 0x76543210;

	m_pDURegs[DU_CP1TR   ] = 0;
	m_pDURegs[DU_CP2TR   ] = 0;
	m_pDURegs[DU_CP3TR   ] = 0;
	m_pDURegs[DU_CP4TR   ] = 0;
	m_pDURegs[DU_DOOR    ] = DEFAULTCOLOR_DISPLAYOFF;
	m_pDURegs[DU_CDER    ] = 0x00000000;
	m_pDURegs[DU_BPOR    ] = DEFAULTCOLOR_BACKGROUND;
	m_pDURegs[DU_RINTOFSR] = 0;

	m_pDURegs[DU_HDSR ] = NCGMode[nModeId].DURegs[DU_HDSR ];
	m_pDURegs[DU_HDER ] = NCGMode[nModeId].DURegs[DU_HDER ];
	m_pDURegs[DU_VDSR ] = NCGMode[nModeId].DURegs[DU_VDSR ];
	m_pDURegs[DU_VDER ] = NCGMode[nModeId].DURegs[DU_VDER ];
	m_pDURegs[DU_HCR  ] = NCGMode[nModeId].DURegs[DU_HCR  ];
	m_pDURegs[DU_HSWR ] = NCGMode[nModeId].DURegs[DU_HSWR ];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久夜色精品一区| 韩国欧美国产1区| 91色乱码一区二区三区| 国产人成一区二区三区影院| 麻豆精品一区二区三区| 欧美一级日韩免费不卡| 美腿丝袜亚洲一区| 日韩一区二区在线观看视频播放| 一区二区三区四区精品在线视频| 成人av网址在线观看| 一区二区三区在线免费观看| 欧美亚洲国产一卡| 蜜臀av一区二区三区| 精品久久久久久久人人人人传媒| 国产中文一区二区三区| 久久久久久久久久久久久久久99| 国产精品综合一区二区| 国产欧美综合在线观看第十页| 丁香六月综合激情| 亚洲一区在线观看网站| 欧美夫妻性生活| 国产一区视频在线看| 国产精品视频一二三区| 色琪琪一区二区三区亚洲区| 日韩精品久久久久久| 国产亚洲综合在线| 91一区二区三区在线播放| 午夜激情久久久| 国产欧美日韩麻豆91| 在线视频综合导航| 韩国成人福利片在线播放| 中文字幕亚洲一区二区av在线 | 91亚洲永久精品| 亚洲18女电影在线观看| 欧美国产综合一区二区| 欧美日本一道本| 成人av电影在线网| 黄色资源网久久资源365| 天天综合色天天| 樱花草国产18久久久久| 国产婷婷色一区二区三区| 在线播放欧美女士性生活| 色网站国产精品| 95精品视频在线| 粉嫩av一区二区三区在线播放| 青青草国产精品亚洲专区无| 亚洲高清在线精品| 亚洲成人你懂的| 亚洲综合免费观看高清完整版在线 | 国产黄人亚洲片| 日本不卡高清视频| 奇米一区二区三区| 精品一区二区国语对白| 视频一区中文字幕国产| 亚洲成av人片在线| 亚洲午夜电影网| 亚洲在线一区二区三区| 日韩av中文字幕一区二区三区| 亚洲小说春色综合另类电影| 亚洲va韩国va欧美va精品| 亚洲一区二区三区四区在线 | 日韩欧美一区二区三区在线| 欧美一区二区三区视频免费| 91精品国产欧美一区二区成人| 4hu四虎永久在线影院成人| 日韩一区二区三区免费看 | 日韩欧美另类在线| 中文欧美字幕免费| 亚洲国产视频在线| 韩日av一区二区| 欧美日本国产一区| 日韩欧美精品三级| 国产精品婷婷午夜在线观看| 亚洲一区二区视频在线| 国产一区二区女| 日本国产一区二区| 久久亚洲二区三区| 亚洲天堂福利av| 激情六月婷婷综合| 色综合欧美在线视频区| 26uuu色噜噜精品一区二区| 国产精品盗摄一区二区三区| 日韩一区在线看| 91精品国产综合久久婷婷香蕉 | 日韩国产一二三区| 91社区在线播放| wwww国产精品欧美| 秋霞电影网一区二区| 色综合欧美在线视频区| 国产精品成人一区二区三区夜夜夜| 天天影视涩香欲综合网| 91黄色免费网站| 亚洲婷婷综合久久一本伊一区| 国产一区二区伦理| 日韩欧美国产电影| 日本特黄久久久高潮| 欧美私模裸体表演在线观看| 国产精品电影一区二区三区| 国产成人鲁色资源国产91色综| 日韩欧美一区二区在线视频| 亚洲黄色免费网站| 在线观看日韩av先锋影音电影院| 国产精品嫩草久久久久| 成人av资源网站| 久久综合久久综合九色| 国产精品一区免费视频| 国产欧美综合色| 一本久久精品一区二区| 亚洲图片一区二区| 日韩欧美国产wwwww| 国产一区二区三区免费播放| 国产精品欧美一区喷水| av在线不卡电影| 亚洲综合视频在线| 91精品国产综合久久精品app| 精品一区二区三区视频在线观看 | 国产乱人伦偷精品视频免下载| 久久综合色一综合色88| 波多野结衣一区二区三区| 亚洲最大的成人av| 日韩精品一区二区三区视频在线观看 | 久久国产精品第一页| 日本一区二区三区四区在线视频 | 看国产成人h片视频| 国产精品午夜春色av| 欧美一级夜夜爽| 91丝袜美腿高跟国产极品老师| 免费观看在线综合色| 综合色天天鬼久久鬼色| www国产亚洲精品久久麻豆| 91老师国产黑色丝袜在线| 国产一区二三区好的| 亚洲激情校园春色| 久久久99久久精品欧美| 欧美日韩中字一区| 91片在线免费观看| 福利一区二区在线观看| 奇米影视一区二区三区| 亚洲一区二区三区四区五区黄| 久久久久久久电影| 精品久久久久久久人人人人传媒| 欧美电影影音先锋| 日本电影欧美片| 91无套直看片红桃| a美女胸又www黄视频久久| 国产裸体歌舞团一区二区| 国产做a爰片久久毛片| 蜜臀久久久久久久| 麻豆精品视频在线| 国产麻豆成人传媒免费观看| 国产综合色产在线精品| 国产福利精品一区二区| 国产精品69久久久久水密桃| 国产麻豆91精品| 99精品国产视频| 色婷婷久久久亚洲一区二区三区| 9i在线看片成人免费| eeuss鲁片一区二区三区 | 国产精品久久久久毛片软件| 国产欧美精品一区二区三区四区| 久久久91精品国产一区二区三区| 久久久久88色偷偷免费| 中文字幕在线观看一区| 五月婷婷久久综合| 国产成人自拍网| 在线日韩一区二区| 欧美mv日韩mv国产网站app| 国产亚洲精品bt天堂精选| 亚洲乱码国产乱码精品精的特点 | 中文一区在线播放| 亚洲国产精品久久久久婷婷884 | 91激情在线视频| 精品久久久久久最新网址| 亚洲乱码国产乱码精品精98午夜| 天天av天天翘天天综合网色鬼国产| 成人精品免费看| 日韩一区二区三区视频在线| 国产精品久久毛片| 国产成人av福利| 日韩午夜精品电影| 久久久综合视频| 国产欧美精品在线观看| 日韩视频免费直播| 久久精品水蜜桃av综合天堂| 久久久国产午夜精品| 一个色妞综合视频在线观看| 国产精品一区二区91| 久久er99精品| 亚洲免费av高清| 国产成人午夜视频| 欧美精品亚洲一区二区在线播放| 亚洲精品在线观看网站| 日韩精品乱码av一区二区| 欧洲av在线精品| 亚洲国产视频一区| 欧美影院精品一区| 一区二区不卡在线视频 午夜欧美不卡在| 九九视频精品免费| 国产清纯白嫩初高生在线观看91| 老司机精品视频一区二区三区|