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

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

?? libmain.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//// Copyright (c) Samsung Electronics. Co. LTD.  All rights reserved.///*++THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OFANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TOTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR APARTICULAR PURPOSE.*/#include <stdlib.h>#include <malloc.h>#include <string.h>#include <stdio.h>#include "register.h"#include "macros.h"#include "fgl.h"#include "platform.h"#include <windows.h>#include <bsp.h>#include "DrvLib.h"#include "s3c6410_base_regs.h"#include "bsp_cfg.h"#include "fimgdrv.h"#include <pmplatform.h>extern int            g_InitDone;extern HANDLE            g_hPwrControl;static HANDLE               g_hMapping;#define    FIMG_PHY_BASE            S3C6410_BASE_REG_PA_FIMG_3DSE#define FIMG_PHY_SIZE            0x90000#define ALLOCATESIZE            0x200000#define ALLOCATENUM            8/* Type, Structure & Class Definitions */struct s3c_3d_mem_alloc{    int             size;    unsigned int vir_addr;    unsigned int phy_addr;};typedef struct ALLOCMEM_POOL {    void*                   phyAddr;    void*                   virAddr;    HANDLE                  handle;    BOOL                    used;    void*                   openHandle;    int                     size;    struct ALLOCMEM_POOL   *next;} ALLOCMEM_POOL;ALLOCMEM_POOL        *pHeadOfMemoryPool = NULL;ALLOCMEM_POOL       *pDepthBuffer = NULL;int g_blkSize = 0;int g_blkNum = 0;int g_depthBufferSize = 0;// Pool memoryAddressBase gPoolMem = {    (void*) 0, NULL};// FIMG registersAddressBase gFimgBase = {    (void*)FIMG_PHY_BASE, NULL};static int fimg_initcount = 0;#if 0static volatile S5PC100_DMAC_REG    *g_pPDMAC0Reg = NULL;static volatile S5PC100_DMAC_REG    *g_pPDMAC1Reg = NULL;static volatile S5PC100_DMAC_REG    *g_pMDMACReg = NULL;static volatile S5PC100_SYSCON_CLK_REG    *g_pSysConReg = NULL;#endifBOOL ReadMemoryPoolFromRegistry(int *pBlkNum, int *pBlkSize, int *pDepthBufferSize);void FimgPowerOn(BOOL isOn);BOOL AllocateMemoryList();//void FreeMemoryList();/*********************************************************************************** Function Name            : InitFimg Inputs                             : None Outputs                        : None Returns                        : None Description                : This function initializes the graphics hardware.************************************************************************************/extern "C" void InitFimg (){    unsigned int GPU_version = 0;            fglGetVersion(&GPU_version);        Plat::printf("\n\n\n  *** FIMG VERSION : 0x%x ***   \n\n\n",GPU_version);            fglSoftReset();    WRITEREG(FGPF_STENCIL_DEPTH_MASK, 0);    WRITEREG(FGRA_PIXEL_SAMPOS ,FGL_SAMPLE_CENTER);}/*********************************************************************************** Function Name            : InitDevice_wince Inputs                             : primary and secondary surface pointers Outputs                        : None Returns                        : opengl es 2.0 contexts Description                : This is the starting function of OpenGL ES 2.0 which maps the FIMG registers,                         set the framebuffer structure parameters, allocates a pool of memory and                          creates a gl context.************************************************************************************/extern "C" BOOL GLES2Initdriver (){       DWORD dwPhys = 0;#if (_WIN32_WCE >= 600)    PHYSICAL_ADDRESS    ioPhysicalBase = {0,0};#endif                Plat::printf("[FIMGDRV] InitDriver\n");    //-------------------------------------------------------------------------    // Map FIMG SFRs    //-------------------------------------------------------------------------    g_hMapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, FIMG_PHY_SIZE, NULL);    if(g_hMapping == NULL)    {        RETAILMSG (1,(TEXT("CreateFileMapping error\r\n")));        return false;    }        gFimgBase.vaddr = (void *)MapViewOfFile(g_hMapping, FILE_MAP_WRITE, 0, 0, 0);        if (gFimgBase.vaddr < 0)    {        RETAILMSG (1,(TEXT("gFimgBase.vaddr not mapped\r\n")));        return false;    }    //if(!VirtualCopy (pVaShared, virtaddr, szBlock, PAGE_NOCACHE|PAGE_READWRITE))    if(!VirtualCopy (gFimgBase.vaddr, (LPVOID)((UINT32)FIMG_PHY_BASE>>8), FIMG_PHY_SIZE, PAGE_NOCACHE|PAGE_READWRITE|PAGE_PHYSICAL))    {        RETAILMSG (1,(TEXT("VirtualCopy error\r\n")));        return false;        }                if(!ReadMemoryPoolFromRegistry(&g_blkNum, &g_blkSize, &g_depthBufferSize))    {        g_blkSize = ALLOCATESIZE;        g_blkNum = ALLOCATENUM;    }              AllocateMemoryList();        return true;}extern "C" BOOL GLES2Opendriver (){   //    RETAILMSG(1,(TEXT("WinCE Version = %d\n"), _WIN32_WCE));        EnterCriticalSection(&gles20_open_mutex);    if(fimg_initcount == 0)    {                //-------------------------------------------------------------------------        // Graphics hardware (FIMG) initialization        //-------------------------------------------------------------------------            FimgPowerOn(TRUE);                InitFimg();            g_InitDone = TRUE;    }            fimg_initcount++;    LeaveCriticalSection(&gles20_open_mutex);    return TRUE;}/*********************************************************************************** Function Name            : CloseDevice Inputs                             : None Outputs                        : None Returns                        : None Description                : This fucntion unmap the FIMG registers, pool memory.************************************************************************************/extern "C" BOOL GLES2DeInitdriver(void){            // Unmap any memory areas that we may have mapped.    if (gFimgBase.vaddr)    {        CloseHandle(g_hMapping);        gFimgBase.vaddr = NULL;    }    return true;}extern "C" BOOL GLES2Closedriver(void){        EnterCriticalSection(&gles20_open_mutex);    fimg_initcount--;    if(fimg_initcount == 0)       {                    g_InitDone = FALSE;                FimgPowerOn(FALSE);    }    LeaveCriticalSection(&gles20_open_mutex);        return TRUE;}extern "C"  void GetPhysicalAddress(BufferAddress* bufAddr){       DWORD dwPhys = 0;              //BufferAddress *bufAddr = (BufferAddress *) MapCallerPtr( (LPVOID)unMappedbufAddr, sizeof(BufferAddress));              if(TRUE == LockPages((LPVOID)bufAddr->vaddrCP, 1, &dwPhys, LOCKFLAG_QUERY_ONLY))    {                //APR 06Mar07         //LockPages was observed to return physical addresses aligned at 4KB.        //This hack was put here to capture the offset from 4KB aligned physical address if any        dwPhys |= (DWORD)(((DWORD)bufAddr->vaddrCP) & (0xFFF));    }    else    {        Plat::printf("LockPage failed..\r\n");    }        bufAddr->paddr = (void*)dwPhys;    bufAddr->vaddr = bufAddr->vaddrCP;    }void FimgPowerOn(BOOL isOn){    S3C6410_SYSCON_REG *pSysConReg;#if (_WIN32_WCE>=600)    PHYSICAL_ADDRESS    ioPhysicalBase = {0,0};    #endif        // Alloc and Map System Controller SFR#if (_WIN32_WCE>=600)    ioPhysicalBase.LowPart = S3C6410_BASE_REG_PA_SYSCON;        pSysConReg = (S3C6410_SYSCON_REG *)MmMapIoSpace(ioPhysicalBase, sizeof(S3C6410_SYSCON_REG), FALSE);#else    pSysConReg = (S3C6410_SYSCON_REG *)DrvLib_MapIoSpace(S3C6410_BASE_REG_PA_SYSCON, sizeof(S3C6410_SYSCON_REG), FALSE);#endif        if (pSysConReg == NULL)    {        RETAILMSG(1,(_T("[FIMG:ERR] FimgPowerOn() : pSysConReg DrvLib_MapIoSpace() Failed\n\r")));        return;    }            if(isOn)    {        pSysConReg->NORMAL_CFG |= (1<<10);        // DOMAIN_G on        pSysConReg->HCLK_GATE |= (1<<31);       // Clock On    }    else    {        pSysConReg->NORMAL_CFG &= ~(1<<10);        // DOMAIN_G off        pSysConReg->HCLK_GATE &= ~(1<<31);       // Clock Off    }    #if (_WIN32_WCE>=600)    MmUnmapIoSpace((PVOID)pSysConReg, sizeof(S3C6410_SYSCON_REG));    #else        DrvLib_UnmapIoSpace((PVOID)pSysConReg);#endif    }extern "C"  void GetSFRAddress(int* sfrAddr){#if (_WIN32_WCE >= 600)        *sfrAddr = (int)VirtualAllocCopyEx(                                (HANDLE)GetCurrentProcessId(),                                 (HANDLE)GetDirectCallerProcessId(),                                 gFimgBase.vaddr,                                 FIMG_PHY_SIZE,                                PAGE_READWRITE | PAGE_NOCACHE);        Plat::printf("sfr phy address = 0x%x\n", gFimgBase.vaddr);                                Plat::printf("sfr address = 0x%x\n", *sfrAddr);#else        *sfrAddr = (int)gFimgBase.paddr;//(int)MapPtrToProcess(gFimgBase.vaddr, (HANDLE) GetCallerProcess());                                //    Plat::printf("sfr address = 0x%x\n", *sfrAddr);    #endif    }extern "C"  void  FreeSFRAddress(int sfrAddr){#if (_WIN32_WCE >= 600)    if(!VirtualFreeEx((HANDLE)GetDirectCallerProcessId(), (LPVOID)sfrAddr, 0,  MEM_RELEASE))    {        RETAILMSG(1,(TEXT("%s: VirtualFreeEx is failed\r\n"),_T(__FUNCTION__)));    }#else    //UnMapPtr((LPVOID)sfrAddr);        #endif    }extern "C"  void GetDMASFRAddress(int** sfrAddr){#if 0#if (_WIN32_WCE >= 600)        sfrAddr[0] = (int *)VirtualAllocCopyEx(                                (HANDLE)GetCurrentProcessId(),                                 (HANDLE)GetDirectCallerProcessId(),                                 (LPVOID)g_pPDMAC0Reg,                                 sizeof(S5PC100_DMAC_REG),                                PAGE_READWRITE | PAGE_NOCACHE);                                    sfrAddr[1] = (int *)VirtualAllocCopyEx(                                (HANDLE)GetCurrentProcessId(),                                 (HANDLE)GetDirectCallerProcessId(),                                 (LPVOID)g_pPDMAC1Reg,                                 sizeof(S5PC100_DMAC_REG),                                PAGE_READWRITE | PAGE_NOCACHE);                                    sfrAddr[2] = (int *)VirtualAllocCopyEx(                                (HANDLE)GetCurrentProcessId(),                                 (HANDLE)GetDirectCallerProcessId(),                                 (LPVOID)g_pMDMACReg,                                 sizeof(S5PC100_DMAC_REG),                                PAGE_READWRITE | PAGE_NOCACHE);                                    sfrAddr[3] = (int *)VirtualAllocCopyEx(                                (HANDLE)GetCurrentProcessId(),                                 (HANDLE)GetDirectCallerProcessId(),                                 (LPVOID)g_pSysConReg,                                 sizeof(S5PC100_SYSCON_CLK_REG),                                PAGE_READWRITE | PAGE_NOCACHE);                                                                                                    #else#if 0        sfrAddr[0] = (int*)S5PC100_BASE_REG_PA_PDMA0;    sfrAddr[1] = (int*)S5PC100_BASE_REG_PA_PDMA1;    sfrAddr[2] = (int*)S5PC100_BASE_REG_PA_MDMA;    sfrAddr[3] = (int*)S5PC100_BASE_REG_PA_SYSCON_CLK;#endif#endif    #endif}extern "C"  void  FreeDMASFRAddress(int** sfrAddr){#if 0        #if (_WIN32_WCE >= 600)    VirtualFreeEx((HANDLE)GetDirectCallerProcessId(), (LPVOID)sfrAddr[0], 0,  MEM_RELEASE);    VirtualFreeEx((HANDLE)GetDirectCallerProcessId(), (LPVOID)sfrAddr[1], 0,  MEM_RELEASE);    VirtualFreeEx((HANDLE)GetDirectCallerProcessId(), (LPVOID)sfrAddr[2], 0,  MEM_RELEASE);    VirtualFreeEx((HANDLE)GetDirectCallerProcessId(), (LPVOID)sfrAddr[3], 0,  MEM_RELEASE);#else    //UnMapPtr((LPVOID)sfrAddr);        #endif    #endif}void* GetEmptyMemBlock(){    ALLOCMEM_POOL *pTemp = pHeadOfMemoryPool;            EnterCriticalSection(&gles20_chunkalloc_mutex);            while(pTemp != NULL)    {        if(pTemp->used == FALSE)         {            pTemp->used = TRUE;            break;        }        pTemp = pTemp->next;    }        LeaveCriticalSection(&gles20_chunkalloc_mutex);            return pTemp;    }extern "C" void DoAllocPhysMem(DWORD hOpenContext, void* bufAddr, int size){    FIMG_CONTEXT* openHandle = (FIMG_CONTEXT*)hOpenContext;    ALLOCMEM_ITEM *pHead = openHandle->allocated_list;        ALLOCMEM_ITEM *pItem, *pPrev = NULL;    s3c_3d_mem_alloc*   pOutputBuf = (s3c_3d_mem_alloc*)bufAddr;    ALLOCMEM_POOL *pTemp = NULL;    int i;                    for(i=0;i<10;i++)    {            Plat::printf("[FIMGDRV:0x%08x] DoAllocPhysMem %dth try \n", hOpenContext, (i+1));        pTemp = (ALLOCMEM_POOL *)GetEmptyMemBlock();                if(pTemp != NULL) break;        Sleep(100);    }            if(pTemp == NULL)    {        Plat::printf("[FIMGDRV:0x%08x] Buffer Allocator unable to allocate %d bytes\n", hOpenContext, size);        pTemp = pHeadOfMemoryPool;        while(pTemp != NULL)        {            Plat::printf("[FIMGDRV:0x%08x] status 0x%x 0x%x 0x%x by 0x%08x\n", hOpenContext, pTemp->virAddr, pTemp->phyAddr, pTemp->used, pTemp->openHandle);            pTemp = pTemp->next;        }            }    else    {                pOutputBuf->size = pTemp->size;            pOutputBuf->phy_addr = (unsigned int)pTemp->phyAddr;       #if (_WIN32_WCE >= 600)              void*   pCPAddr;        pCPAddr = VirtualAllocCopyEx((HANDLE)GetCurrentProcessId(),                            (HANDLE)GetDirectCallerProcessId(),                            (LPVOID)pTemp->virAddr,                            pTemp->size,                            PAGE_READWRITE | PAGE_NOCACHE );           pOutputBuf->vir_addr = (unsigned int)pCPAddr;                                              #else        pOutputBuf->vir_addr = (unsigned int)pTemp->virAddr;#endif        for(pItem=pHead;pItem != NULL; pItem=pItem->next)         {            pPrev = pItem;        }                            pItem = (ALLOCMEM_ITEM*)malloc(sizeof(ALLOCMEM_ITEM));        pItem->phyAddr = pTemp->phyAddr;        pItem->virAddr = pTemp->virAddr;        pItem->virAddrCP = (void*)pOutputBuf->vir_addr;        pItem->memPool = (void*)pTemp;        pTemp->used = TRUE;        pTemp->openHandle = (void*)hOpenContext;        pItem->next = 0;                if(pPrev != NULL) pPrev->next = pItem;        else openHandle->allocated_list = pItem;                Plat::printf("[FIMGDRV:0x%08x] DoAllocPhysMem 0x%x 0x%x 0x%x %d\n", hOpenContext, pOutputBuf->phy_addr, pOutputBuf->vir_addr, pTemp->virAddr, pOutputBuf->size);        Plat::printf("[FIMGDRV:0x%08x] After Alloc, Block list for this context\n", hOpenContext);        Plat::printf("[FIMGDRV:0x%08x] ========================================\n", hOpenContext);        for(pItem=openHandle->allocated_list;pItem != NULL; pItem=pItem->next)         {            Plat::printf("[FIMGDRV:0x%08x] 0x%x 0x%x 0x%x is Allocated\n", hOpenContext, pItem->phyAddr, pItem->virAddrCP, pItem->virAddr);        }    

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品久久久久| 欧美日韩综合在线免费观看| 一区二区三区在线影院| 日韩欧美在线影院| 91女神在线视频| 国产在线麻豆精品观看| 亚洲综合久久久| 国产精品网站在线播放| 欧美一区二区视频在线观看| 色婷婷综合久久久中文一区二区 | fc2成人免费人成在线观看播放| 五月天激情小说综合| 亚洲欧洲精品一区二区三区 | 亚洲美女免费视频| 国产亚洲欧洲997久久综合| 91精品国产一区二区三区蜜臀 | 日韩成人一区二区| 亚洲精品日韩综合观看成人91| 国产区在线观看成人精品 | 自拍偷自拍亚洲精品播放| 久久综合色一综合色88| 91精品国产美女浴室洗澡无遮挡| 91久久精品一区二区| 成人av免费在线观看| 国产福利一区二区三区在线视频| 免费观看久久久4p| 青青草91视频| 日韩激情视频在线观看| 亚洲福利一区二区三区| 亚洲精品中文在线影院| 亚洲免费高清视频在线| 亚洲欧美日韩精品久久久久| 国产精品麻豆网站| 亚洲欧美综合另类在线卡通| 国产精品理伦片| 国产精品久久久久影院亚瑟| 国产欧美日韩久久| 国产目拍亚洲精品99久久精品| 亚洲精品在线三区| 久久青草欧美一区二区三区| 婷婷成人综合网| 一区二区久久久久| 亚洲一区二区三区在线播放| 亚洲va韩国va欧美va精品| 亚洲mv大片欧洲mv大片精品| 日韩va亚洲va欧美va久久| 日韩成人免费在线| 国产综合久久久久久鬼色| 国产精品一区二区在线观看不卡 | 精品一区二区三区视频 | 蜜桃视频在线观看一区二区| 奇米影视一区二区三区| 麻豆国产91在线播放| 精品一区二区日韩| 国产不卡在线一区| av一区二区三区四区| 色婷婷综合久久久中文字幕| 欧美日韩国产在线播放网站| 日韩免费成人网| 日本一区免费视频| 一区二区三区在线免费| 午夜精品久久久| 国产毛片精品视频| www.视频一区| 538prom精品视频线放| 欧美精品一区在线观看| 国产精品福利在线播放| 亚洲高清三级视频| 韩国三级电影一区二区| 99久久综合精品| 欧美蜜桃一区二区三区| 久久久久国产精品麻豆| 亚洲人精品一区| 免费在线一区观看| 高清免费成人av| 欧美日本在线一区| 久久一日本道色综合| 亚洲乱码日产精品bd| 男人的天堂久久精品| 国产91丝袜在线播放| 欧美午夜在线观看| 久久亚区不卡日本| 亚洲国产视频一区二区| 国产一区 二区| 欧美日韩中文一区| 国产日韩欧美在线一区| 亚洲www啪成人一区二区麻豆| 国产综合色产在线精品| 欧美在线一区二区三区| 国产色91在线| 日韩和欧美一区二区| av在线这里只有精品| 日韩欧美电影一二三| 亚洲老妇xxxxxx| 国产精品夜夜嗨| 欧美精品日韩精品| 亚洲欧美偷拍三级| 国产精品91一区二区| 在线综合+亚洲+欧美中文字幕| 亚洲天堂精品在线观看| 国产一区二区91| 日韩视频不卡中文| 亚洲一区二区高清| 91在线精品一区二区三区| 精品福利在线导航| 首页国产欧美日韩丝袜| 91蝌蚪国产九色| 国产精品嫩草影院av蜜臀| 久久精品国产精品青草| 欧美精品tushy高清| 一区二区在线观看免费视频播放| 国产成人av电影| 精品日韩av一区二区| 五月婷婷欧美视频| 91国产精品成人| 亚洲同性gay激情无套| 国产成人免费视| 亚洲女女做受ⅹxx高潮| 国产乱子轮精品视频| 欧美大肚乱孕交hd孕妇| 日本欧美加勒比视频| 欧美日韩中文国产| 亚洲成a天堂v人片| 在线观看亚洲a| 一个色妞综合视频在线观看| 91一区二区在线| 国产精品高潮呻吟| av日韩在线网站| 亚洲欧洲av色图| 91蜜桃传媒精品久久久一区二区| 国产精品免费视频一区| 成人h动漫精品一区二| 中文字幕巨乱亚洲| 成人一级片网址| 国产精品久久久久精k8| jvid福利写真一区二区三区| 国产精品乱码妇女bbbb| k8久久久一区二区三区 | 国产精品久久久久久久久免费丝袜 | 欧美日韩精品一区视频| 亚洲一区二区三区在线播放| 欧美中文字幕一区| 午夜影视日本亚洲欧洲精品| 欧美久久婷婷综合色| 日本aⅴ精品一区二区三区| 欧美一级黄色录像| 精油按摩中文字幕久久| 久久久久久久综合狠狠综合| 国产福利一区二区三区视频| 国产欧美一区二区精品秋霞影院 | 一区二区视频免费在线观看| 在线观看视频一区二区欧美日韩| 亚洲视频小说图片| 欧美日韩在线三级| 日本亚洲视频在线| 久久一区二区三区四区| 丁香激情综合国产| 亚洲人一二三区| 欧美嫩在线观看| 国产美女在线精品| 亚洲少妇中出一区| 91精品久久久久久久91蜜桃| 国产一区二区不卡| 亚洲男人的天堂在线aⅴ视频| 欧美日韩一区二区三区在线看 | 亚洲精品视频一区| 制服丝袜中文字幕亚洲| 国产一区二区三区四| 亚洲素人一区二区| 91精品国产色综合久久| 国产99久久久久| 亚洲电影第三页| 26uuu久久天堂性欧美| 色综合久久综合网97色综合| 日韩中文字幕一区二区三区| 国产丝袜美腿一区二区三区| 欧美亚洲另类激情小说| 国产又粗又猛又爽又黄91精品| 国产精品免费视频观看| 欧美日韩国产高清一区| 国产成人在线色| 午夜精品久久久| 国产精品欧美经典| 日韩一区二区三区免费观看| 成人福利视频网站| 老色鬼精品视频在线观看播放| 国产精品久久久久久亚洲伦 | 亚洲六月丁香色婷婷综合久久 | 国产98色在线|日韩| 天天操天天干天天综合网| 中文字幕av一区二区三区高| 欧美老年两性高潮| 成人午夜短视频| 蜜臀久久久久久久| 亚洲精品美腿丝袜| 国产欧美日韩三级| 日韩欧美在线综合网| 欧美性做爰猛烈叫床潮| 丁香激情综合五月| 久久99热狠狠色一区二区|