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

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

?? surf.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      : surf.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.09.02
//              - Modified flip.
//              2003.11.18
//              - Corrected pixel format.
//              - Removed unused code.
//              2004.03.01
//              - Removed unused code.
//              2004.09.02
//              - Removed unused code.
//              2005.11.10
//              - Modified DetectPixelFormat to support RGB1555 format.
//

#include "precomp.h"

// surface list
extern NCGSurf* g_pNCGSurfList;

SCODE NCG::AllocSurface(
    GPESurf **ppSurf,
    int width,
    int height,
    EGPEFormat format,
    int surfaceFlags )
{
    EDDGPEPixelFormat pixelFormat;
    GPEModeEx modeInfoEx;

    if (format == gpeDeviceCompatible) {
        GetModeInfoEx(&modeInfoEx, GetModeId());
        format = modeInfoEx.modeInfo.format;
        pixelFormat = modeInfoEx.ePixelFormat;
    }
    else pixelFormat = EGPEFormatToEDDGPEPixelFormat[format];

#ifdef PREFER_SYSTEM_MEMORY
    /* When GPE surface flags is set to GPE_PREFER_VIDEO_MEMORY,  */
    /* surface memory is allocated in system memory.              */
    /* In order to avoid a exception on BitBlt from system memory,*/
    /* it is used only when width and height are larger than 32   */
    /* pixel.                                                     */
    if ((surfaceFlags & GPE_PREFER_VIDEO_MEMORY) && (width > 32) && (height > 32))
        surfaceFlags &= ~GPE_PREFER_VIDEO_MEMORY;
#endif

    return AllocSurface((NCGSurf**)ppSurf, width, height, 
                        format, pixelFormat, surfaceFlags);
}


SCODE NCG::AllocSurface(
    DDGPESurf **ppSurf,
    int width,
    int height,
    EGPEFormat format,
    EDDGPEPixelFormat pixelFormat,
    int surfaceFlags )
{
    return AllocSurface((NCGSurf**)ppSurf, width, height,
                        format, pixelFormat, surfaceFlags);
}


SCODE NCG::AllocSurface(
    NCGSurf **ppSurf,
    int width,
    int height,
    EGPEFormat format,
    EDDGPEPixelFormat pixelFormat,
    int surfaceFlags )
{
	SurfaceHeap	*pHeap;
	int			nSurfaceBytes;
	int			nBpp = EGPEFormatToBpp[format];
	int			stride;
	int			nAlign, nAlignedWidth;
//	int			nWidth, nHeight;

    DEBUGMSG(GPE_ZONE_ENTER, (TEXT("NCG::AllocSurface\r\n")));

    DEBUGMSG(GPE_ZONE_CREATE,
//    RETAILMSG(1,
        (TEXT("AllocSurface: %dx%d, %dbpp, format = %d, pixelformat = 0x%x, surfaceFlags = %d\r\n"),
        width, height, nBpp, format, pixelFormat, surfaceFlags));

    /* GPE requires dword aligned source width, so 1bpp linear    */
    /* surface must be aligned with 32 pixel.                     */
    if (nBpp == 1)
        nAlign = 32;
    else
        nAlign = 8;
    nAlignedWidth = ((width + nAlign - 1) & (- nAlign));
    nSurfaceBytes = (nBpp * (nAlignedWidth * height)) / 8;
    stride = nAlignedWidth * nBpp / 8;  // default stride

    /* When video memory is required or prefered, try to allocate */
    /* surface image buffer from video memory.                    */
    if ((surfaceFlags & GPE_REQUIRE_VIDEO_MEMORY) ||
        (surfaceFlags & GPE_PREFER_VIDEO_MEMORY)) {

        pHeap = m_pVideoMemoryHeap->Alloc(nSurfaceBytes);

        if (pHeap) {
            ULONG offset = pHeap->Address();
            *ppSurf = new NCGSurf(width, height, offset, 
                                      (void *)(m_pLAW + offset), stride, 
                                      format, pixelFormat, pHeap);
            if (!(*ppSurf)) {
                pHeap->Free();
                return E_OUTOFMEMORY;
            }

            DEBUGMSG(GPE_ZONE_CREATE,
                (TEXT("AllocSurface: ")
                TEXT("Created in video RAM.\r\n")));

            goto CreatedSurface;
        }

        if (surfaceFlags & GPE_REQUIRE_VIDEO_MEMORY) {
            *ppSurf = (NCGSurf*)NULL;
            DEBUGMSG(GPE_ZONE_ERROR | GPE_ZONE_CREATE,
                (TEXT("AllocSurface: ")
                TEXT("Failed to allocate video RAM.\r\n")));
            return E_OUTOFMEMORY;
        }
    }

    /*  GPE requires 32 pixel or more as source width in system memory. */
    if (width < 32)
        width = 32;

    *ppSurf = new NCGSurf(width, height, stride, format, pixelFormat);
    if (*ppSurf) {
        // check we allocated bits succesfully
        if ((*ppSurf)->Buffer()) {
            DEBUGMSG(GPE_ZONE_CREATE,
                (TEXT("AllocSurface: ")
                TEXT("Created in system RAM.\r\n")));
           goto CreatedSurface;
        }
        delete *ppSurf;
    }

    DEBUGMSG(GPE_ZONE_ERROR | GPE_ZONE_CREATE,
        (TEXT("AllocSurface: ")
        TEXT("Failed to create surface.\r\n")));
    return E_OUTOFMEMORY;

CreatedSurface:
//    DEBUGMSG(1,(TEXT("AllocSurface: *ppSurf = 0x%08x\r\n"), *ppSurf));

    return S_OK;
}


NCGSurf::NCGSurf(
    int width,
    int height,
    unsigned long offset,
    void *pBits,
    int stride,
    EGPEFormat format,
    SurfaceHeap *pHeap )
    : DDGPESurf( width, height, pBits, stride, format )
{
    DEBUGMSG(1, (TEXT("NCGSurf::NCGSurf(%d, %d, 0x%08x, 0x%08x, %d, %d, 0x%08x)\r\n"),
        width, height, offset, pBits, stride, format, pHeap));

    m_pHeap = pHeap;
    m_fInVideoMemory = TRUE;
    m_nOffsetInVideoMemory = offset;
    m_nSrcCount = 0;
    m_nDstCount = 0;

    NCGSurf* pSurf = g_pNCGSurfList;
    if (pSurf == NULL) {
        g_pNCGSurfList = this;
    }
    while (pSurf != NULL) {
        if (pSurf->m_pSurfList == NULL) {
            pSurf->m_pSurfList = this;
            break;
        }
        pSurf = pSurf->m_pSurfList;
    }
    m_pSurfList = NULL;
    m_dwSurfaceID = 0;
    m_dwLayerID = 0;
} 


NCGSurf::NCGSurf(
    int width,
    int height,
    unsigned long offset,
    void *pBits,
    int stride,
    EGPEFormat format,
    EDDGPEPixelFormat pixelFormat,
    SurfaceHeap *pHeap )
    : DDGPESurf( width, height, pBits, stride, format, pixelFormat )
{
    DEBUGMSG(1, (TEXT("NCGSurf::NCGSurf(%d, %d, 0x%08x, 0x%08x, %d, %d, 0x%08x)\r\n"),
        width, height, offset, pBits, stride, format, pHeap));

    m_pHeap = pHeap;
    m_fInVideoMemory = TRUE;
    m_nOffsetInVideoMemory = offset;
    m_nSrcCount = 0;
    m_nDstCount = 0;

    NCGSurf* pSurf = g_pNCGSurfList;
    if (pSurf == NULL) {
        g_pNCGSurfList = this;
    }
    while (pSurf != NULL) {
        if (pSurf->m_pSurfList == NULL) {
            pSurf->m_pSurfList = this;
            break;
        }
        pSurf = pSurf->m_pSurfList;
    }
    m_pSurfList = NULL;
    m_dwSurfaceID = 0;
    m_dwLayerID = 0;
} 


NCGSurf::NCGSurf(
    int width,
    int height,
    int stride,
    EGPEFormat format,
    EDDGPEPixelFormat pixelFormat )
    : DDGPESurf( width, height, stride, format, pixelFormat )
{
    DEBUGMSG(1, (TEXT("NCGSurf::NCGSurf(%d, %d, %d, %d)\r\n"),
        width, height, stride, format));

    m_pHeap = NULL;
    m_fInVideoMemory = FALSE;
    m_nOffsetInVideoMemory = 0;
    m_nSrcCount = 0;
    m_nDstCount = 0;

    NCGSurf* pSurf = g_pNCGSurfList;
    if (pSurf == NULL) {
        g_pNCGSurfList = this;
    }
    while (pSurf != NULL) {
        if (pSurf->m_pSurfList == NULL) {
            pSurf->m_pSurfList = this;
            break;
        }
        pSurf = pSurf->m_pSurfList;
    }
    m_pSurfList = NULL;
    m_dwSurfaceID = 0;
    m_dwLayerID = 0;
} 


NCGSurf::~NCGSurf()
{
//    DEBUGMSG(1, (TEXT("NCG::~NCG()\r\n")));

    if (m_pHeap) {
        m_pHeap->Free();
    }

    NCGSurf* pCurrSurf = g_pNCGSurfList;
    NCGSurf* pPrevSurf = pCurrSurf;
    while (pCurrSurf != NULL) {
        if (pCurrSurf == this) {
            pPrevSurf->m_pSurfList = pCurrSurf->m_pSurfList;
            break;
        }
        pPrevSurf = pCurrSurf;
        pCurrSurf = pCurrSurf->m_pSurfList;
    }
}


SCODE NCG::DetectPixelFormat(
    DWORD dwCaps,
    DDPIXELFORMAT *pddpf,
    EGPEFormat *pFormat,
    EDDGPEPixelFormat *pPixelFormat )
{
    if (pddpf->dwFlags & DDPF_FOURCC) {
		RETAILMSG(1,
            (TEXT("DetectPixelFormat: Unsupported FourCC 0x%08x.\r\n"), pddpf->dwFourCC));
		return E_INVALIDARG;
    }
    else if (pddpf->dwFlags & DDPF_RGB) {
        if (pddpf->dwRGBBitCount == 1) {
            DEBUGMSG(GPE_ZONE_CREATE,
                (TEXT("DetectPixelFormat: RGB 1bpp.\r\n")));
            *pPixelFormat = ddgpePixelFormat_1bpp;
            *pFormat = gpe1Bpp;
        }
        else if (pddpf->dwRGBBitCount == 8) {
            DEBUGMSG(GPE_ZONE_CREATE,
                (TEXT("DetectPixelFormat: RGB 8bpp.\r\n")));
            *pPixelFormat = ddgpePixelFormat_8bpp;
            *pFormat = gpe8Bpp;
        }
        else if (pddpf->dwRGBBitCount == 16) {
            DEBUGMSG(GPE_ZONE_CREATE,
                (TEXT("DetectPixelFormat: RGB 16bpp.\r\n")));
			if (pddpf->dwFlags & DDPF_ALPHAPIXELS)
	            *pPixelFormat = ddgpePixelFormat_5551;
			else
	            *pPixelFormat = ddgpePixelFormat_565;

            *pFormat = gpe16Bpp;
        }
        else {
            RETAILMSG(1,
                (TEXT("DetectPixelFormat: Unsupported RGB %dbpp.\r\n"), pddpf->dwRGBBitCount));
            return E_INVALIDARG;
        }
    }
    else {
        RETAILMSG(1,
            (TEXT("DetectPixelFormat: Unknown format.\r\n")));
        return E_INVALIDARG;
    }

    return S_OK;
}


void NCG::SetVisibleSurface( GPESurf *pSurf )
{
    DWORD   dwOffset = pSurf->OffsetInVideoMemory();
	int		nPlane = 0;

	DEBUGMSG(1, (TEXT("SetVisibleSurface : 0x%08x\r\n"), NCG_FBBASE + dwOffset));
	m_pDUPnRegs[0][DU_PnDSA0R] = NCG_FBBASE + dwOffset;
	m_pDUPnRegs[0][DU_PnDSA1R] = NCG_FBBASE + dwOffset;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合久久| 94-欧美-setu| 亚洲欧美日韩在线| 欧美tickling网站挠脚心| 99精品欧美一区二区蜜桃免费| 日本视频免费一区| 亚洲丝袜精品丝袜在线| 久久综合给合久久狠狠狠97色69| 欧美在线观看一区二区| 成人免费黄色大片| 国产一区二区三区不卡在线观看 | 亚洲欧洲日产国产综合网| 日韩午夜三级在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 高清在线不卡av| 精品一区二区三区在线观看 | 国产在线观看一区二区| 视频在线观看一区| 一区二区三区四区不卡在线 | 日韩电影免费一区| 一区二区成人在线视频| 国产精品久久久久久一区二区三区| 欧美一区二区三区影视| 欧美体内she精高潮| 色狠狠综合天天综合综合| 懂色中文一区二区在线播放| 国产一区二区精品久久| 另类中文字幕网| 麻豆成人免费电影| 日本午夜精品一区二区三区电影| 亚洲成人中文在线| 亚洲综合小说图片| 一区二区三区日韩在线观看| 有码一区二区三区| 亚洲影院在线观看| 亚洲18色成人| 日韩制服丝袜先锋影音| 天天色综合天天| 奇米777欧美一区二区| 日韩综合小视频| 日韩高清国产一区在线| 日韩国产在线一| 蜜桃视频在线观看一区| 激情综合色播五月| 国产美女久久久久| 懂色av一区二区在线播放| 成人免费毛片app| 色婷婷久久一区二区三区麻豆| 一本色道久久综合亚洲精品按摩| 色8久久精品久久久久久蜜| 欧美亚洲图片小说| 91精品午夜视频| 久久综合久久综合久久综合| 国产日产欧美一区二区视频| 中文欧美字幕免费| 一区二区三区日韩欧美| 亚洲成av人片一区二区三区| 久久黄色级2电影| 国产麻豆精品95视频| 成人福利视频在线| 精品污污网站免费看| 欧美精品一卡二卡| 久久精品免视看| 亚洲乱码中文字幕| 秋霞午夜鲁丝一区二区老狼| 国精产品一区一区三区mba桃花 | 欧美国产视频在线| 一区二区三区在线视频观看| 日韩国产一二三区| 国产剧情在线观看一区二区| 99久久精品免费看| 91精品国产综合久久精品app | 欧美精品一区二区三区在线| 国产精品不卡视频| 婷婷丁香激情综合| 国产高清视频一区| 欧美性大战久久久久久久蜜臀 | 日韩一级片在线播放| 久久久99精品久久| 亚洲尤物在线视频观看| 激情小说欧美图片| 在线观看亚洲精品| 欧美tk—视频vk| 亚洲精品国久久99热| 久久99精品国产麻豆婷婷| 成人av网站在线观看免费| 欧美日韩国产高清一区| 国产午夜精品一区二区| 亚洲午夜久久久久久久久电影院| 九九精品一区二区| 色综合视频在线观看| 精品国产污网站| 亚洲综合激情小说| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩国产综合视频在线观看 | 国产精品一区三区| 欧美日韩情趣电影| 国产精品久久久久永久免费观看| 麻豆精品一区二区| 欧美在线视频不卡| 亚洲欧洲日韩女同| 国产乱淫av一区二区三区| 欧美日韩精品一区二区天天拍小说| 欧美国产一区在线| 久久成人18免费观看| 欧美三日本三级三级在线播放| 国产日韩v精品一区二区| 麻豆国产欧美日韩综合精品二区| 欧美视频一区二区三区四区| 国产精品国产三级国产aⅴ无密码| 久久国产精品第一页| 欧美日韩综合色| 一区二区三区在线免费播放| 成人网在线免费视频| 久久综合九色综合欧美亚洲| 日韩激情av在线| 在线电影欧美成精品| 一区二区三区在线视频播放| 99久久免费精品高清特色大片| 久久久久久久久久久久久女国产乱| 日韩成人一区二区三区在线观看| 欧美一a一片一级一片| 亚洲三级免费电影| kk眼镜猥琐国模调教系列一区二区| 久久精品夜夜夜夜久久| 国产在线精品一区二区夜色| 日韩美女一区二区三区四区| 免费在线视频一区| 欧美一级片在线看| 日韩成人伦理电影在线观看| 欧美一区二区久久| 日本伊人色综合网| 91精品免费观看| 蜜桃视频在线观看一区二区| 日韩免费看的电影| 裸体在线国模精品偷拍| 日韩美女在线视频| 寂寞少妇一区二区三区| 日韩欧美一级片| 国产一区999| 久久精品一区八戒影视| 国产91精品在线观看| 国产精品免费久久| 91小宝寻花一区二区三区| 亚洲美女免费在线| 欧美午夜精品久久久久久超碰 | 波多野结衣中文字幕一区 | 久久电影国产免费久久电影 | 国产精品美女视频| 91美女片黄在线观看| 一区av在线播放| 5566中文字幕一区二区电影| 免费观看成人av| 国产亚洲欧美色| 99精品久久久久久| 亚洲高清免费观看| 欧美一级艳片视频免费观看| 国产伦精品一区二区三区视频青涩| 欧美国产精品中文字幕| 色婷婷激情久久| 日本成人中文字幕在线视频| 久久久噜噜噜久久人人看| av一区二区三区| 日韩在线一区二区三区| 久久久久久久久久看片| 色一区在线观看| 欧美a级一区二区| 国产精品网站在线观看| 欧美在线免费视屏| 极品尤物av久久免费看| 综合电影一区二区三区| 欧美一级黄色片| 99久久精品情趣| 琪琪一区二区三区| 中文字幕制服丝袜成人av| 欧美精品自拍偷拍| 国产成人精品免费视频网站| 亚洲码国产岛国毛片在线| 日韩精品中文字幕一区二区三区| 99久久国产综合色|国产精品| 五月天一区二区三区| 国产亚洲成aⅴ人片在线观看| 精品视频在线免费观看| 国产综合色在线| 香蕉加勒比综合久久| 国产亚洲精品免费| 欧美三区免费完整视频在线观看| 国产精品一区在线观看乱码| 亚洲韩国一区二区三区| 中文字幕 久热精品 视频在线| 欧美午夜影院一区| 国产馆精品极品| 美日韩黄色大片| 一区二区三区精品| 亚洲国产精品激情在线观看| 日韩欧美三级在线| 欧美亚洲综合在线| 99久久99久久精品免费观看| 国产美女一区二区| 蜜桃一区二区三区在线观看|