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

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

?? 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一区二区三区免费野_久草精品视频
色婷婷狠狠综合| 丁香五精品蜜臀久久久久99网站 | 欧美日韩视频专区在线播放| 色综合天天综合网天天看片| 一本一本久久a久久精品综合麻豆| 色综合久久久久| 日韩欧美中文字幕制服| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日本大香伊一区二区三区| 在线观看91视频| 2014亚洲片线观看视频免费| 国产精品女主播av| 婷婷久久综合九色综合绿巨人| 日本vs亚洲vs韩国一区三区二区| 精品国产成人在线影院| 久久久一区二区| 国产精品成人免费精品自在线观看| 欧美日韩国产综合一区二区| 91精品国产91久久综合桃花| 精品久久一二三区| 久久精品欧美一区二区三区麻豆| 国产精品欧美精品| 午夜欧美电影在线观看| 激情综合网天天干| 亚洲美女电影在线| 久久久久久久久伊人| 夜夜操天天操亚洲| 美女视频黄久久| 色婷婷av一区二区三区大白胸| 日韩三级在线免费观看| 国产精品日韩精品欧美在线| 奇米精品一区二区三区在线观看| 岛国一区二区在线观看| 日韩午夜激情电影| 国产精品成人午夜| 亚洲制服丝袜av| 成人av资源下载| 日韩欧美激情在线| 五月激情综合网| www.亚洲人| 国产亚洲欧美激情| 日韩av在线播放中文字幕| 色一区在线观看| 久久综合999| 日本亚洲一区二区| 欧美日韩电影一区| 亚洲男人的天堂在线aⅴ视频| 国产馆精品极品| 制服丝袜亚洲精品中文字幕| 一区二区三区成人| 成人性生交大片免费看在线播放| 日韩欧美精品在线视频| 视频一区视频二区中文字幕| 99精品视频在线播放观看| 国产婷婷色一区二区三区| 日本在线不卡视频一二三区| 懂色av中文字幕一区二区三区| 欧美成人精品二区三区99精品| 亚洲美女屁股眼交3| 91欧美激情一区二区三区成人| 欧美精品一区二区蜜臀亚洲| 卡一卡二国产精品| 91精品国产一区二区| 亚洲h在线观看| 欧美日韩国产一二三| 国产精品福利在线播放| 豆国产96在线|亚洲| 久久综合av免费| 国产激情一区二区三区| 国产成人自拍高清视频在线免费播放| 中文字幕av一区二区三区免费看| 在线亚洲免费视频| 天堂va蜜桃一区二区三区漫画版| 在线91免费看| 国产精品一二三四五| 国产校园另类小说区| 岛国av在线一区| 亚洲黄色录像片| 91精品一区二区三区在线观看| 美国一区二区三区在线播放| 久久久久久久久久美女| 亚洲丝袜精品丝袜在线| 国产91高潮流白浆在线麻豆| 91精品国产综合久久福利软件| 亚洲午夜久久久久久久久电影院 | 久久成人免费网站| 精品对白一区国产伦| 日本va欧美va精品| 欧美性生活久久| 亚洲成在人线免费| 欧美日韩不卡在线| 蜜乳av一区二区三区| 日韩精品一区在线| 精品中文字幕一区二区| 4438x成人网最大色成网站| 亚洲国产aⅴ天堂久久| 制服丝袜中文字幕亚洲| 奇米综合一区二区三区精品视频| 在线视频国内一区二区| 亚洲国产日韩精品| 色8久久精品久久久久久蜜| 亚洲女厕所小便bbb| 91伊人久久大香线蕉| 亚洲一区二区四区蜜桃| 色噜噜狠狠色综合欧洲selulu| 一区二区三区在线免费| 色系网站成人免费| 亚洲第一久久影院| 91精品一区二区三区在线观看| 狠狠色2019综合网| 久久精品欧美日韩精品| 一道本成人在线| 亚洲精品五月天| 欧美一区日韩一区| 国产成人鲁色资源国产91色综| 亚洲日韩欧美一区二区在线| 欧美色涩在线第一页| 久久精品国产亚洲一区二区三区| 久久久亚洲精华液精华液精华液 | 久久综合久久综合亚洲| 亚洲女人****多毛耸耸8| 国产精品无遮挡| 一区二区三区影院| 中文字幕在线观看一区| 中文字幕第一页久久| 中文字幕二三区不卡| 亚洲伦在线观看| 日韩一区日韩二区| 亚洲精品中文在线影院| 一区二区三区免费看视频| 亚洲男同性恋视频| 亚洲综合小说图片| 爽好久久久欧美精品| 成人av高清在线| 亚洲色图在线播放| 日韩免费一区二区| 成人丝袜18视频在线观看| 亚洲一级在线观看| 久久精品人人爽人人爽| 欧美亚洲综合色| 国产乱理伦片在线观看夜一区| 亚洲视频1区2区| 欧美久久一区二区| 风流少妇一区二区| 国产精品福利一区二区三区| 欧美一级艳片视频免费观看| 国产成人免费视频网站高清观看视频| 日日摸夜夜添夜夜添国产精品 | 欧美日韩视频不卡| 夫妻av一区二区| 秋霞电影网一区二区| 中文字幕一区二区三区蜜月| 欧美成人vps| 欧美午夜电影一区| 国产一区不卡在线| 亚洲一卡二卡三卡四卡五卡| 国产精品家庭影院| 精品日韩99亚洲| 91在线一区二区| 日韩影院免费视频| 亚洲欧洲日韩女同| 欧美三级电影在线看| 99久久99久久精品国产片果冻| 久久不见久久见中文字幕免费| 亚洲成在人线在线播放| 中文字幕日韩av资源站| 久久综合久久鬼色中文字| 欧美精品一卡二卡| 91丨porny丨蝌蚪视频| 国产suv一区二区三区88区| 亚洲国产成人精品视频| 亚洲一区二区在线观看视频| 亚洲欧洲av一区二区三区久久| 国产精品毛片高清在线完整版| 日韩欧美国产高清| 69久久99精品久久久久婷婷| 在线观看亚洲专区| av网站免费线看精品| 国产成人免费xxxxxxxx| 国内精品在线播放| 激情小说欧美图片| 天堂一区二区在线| 亚洲最快最全在线视频| 综合中文字幕亚洲| 国产乱码一区二区三区| 亚洲妇女屁股眼交7| 国产女同性恋一区二区| 国产麻豆9l精品三级站| 欧美精品黑人性xxxx| 婷婷综合另类小说色区| 欧亚洲嫩模精品一区三区| 亚洲综合自拍偷拍| 欧美三级蜜桃2在线观看| 亚洲图片激情小说| 色婷婷国产精品久久包臀| 亚洲人成伊人成综合网小说| 欧美xxxxxxxx| 国产女人aaa级久久久级| 中文字幕欧美国产| 国产欧美精品在线观看|