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

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

?? dalgco.c

?? 此代碼為WCE5.0下顯示器的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
      // programming the gamma correction.

      if (lpController->ulFlags & GCO_ACTIVE)
      {
        if (lpController->lpHWED->ulFunctionHooks & GCO_HOOK_GAMMA16)
        {
          (*lpController->lpHWED->pfnSetGamma16Correction)(lpController->hGCO, i,
                                                           lpaGamma16);
        } else
        {
          (*lpController->lpHWED->pfnSetGammaCorrection)(lpController->hGCO, i,
                                                         lpaGamma);
        }
      }

    }

    i += 1;
    ulControllers = (ulControllers >> 1);
  }

  DALDEBUG((DALDBG_ENTRY_EXIT, "DALSetGammaCorrection - Exit"));
}



/******************************Public*Routine******************************\
*
* VOID DALSetGamma16Correction
*
* Programs the gamma correction of the specified controllers.
*
* Note: DAL does nothing if the controller is inactive.  If multiple
*       controllers are specified in the same call, both need be working
*       cooperatively from the same desktop, and hence will require the
*       same gamma correction values.
*
*       Gamma correction is normally programmed via ATI's property pages,
*       but Microsoft has their own API into the driver for Gamma Correction
*       via ExtEscape .... hence DAL has to support a call to process Gamma.
*
\**************************************************************************/

VOID DALSetGamma16Correction(
HDAL hDAL,
ULONG ulDriverID,
LPDEVCLUT16 lpaGamma16)
{
  LPHW_DAL_EXTENSION  lpHDE;
  LPDEVGCO            lpController;
  LPDRIVERDATA        lpDriverData;
  LPDEVCLUT           lpaGamma;
  DEVCLUT             aGamma[256];
  ULONG               ulControllers;
  ULONG               i;

  DALDEBUG((DALDBG_ENTRY_EXIT, "DALSetGamma16Correction - Entry"));
  DALASSERT((hDAL != NULL), "DAL handle 'hDAL' is NULL!");

  // grab the structure for the DAL out of the DDL's handle to it
  lpHDE = (LPHW_DAL_EXTENSION)hDAL;

  // save the gamma correction in DAL DRIVERDATA structure.
  lpDriverData = (LPDRIVERDATA) &lpHDE->aDriverData[ulDriverID];

  if (lpHDE->aDriverData[ulDriverID].ulFlags & DRIVERDATA_USEGAMEGAMMA)
  {
    // DAL does not save out the game gamma when modified by a gaming
    // application because this will change from game to game, and the 
    // DAL should ensure each gaming session starts from the same 
    // default gamma

    MOVEMEMORY((LPVOID)lpDriverData->aGameGamma16,
               (LPVOID)lpaGamma16,
               (sizeof(DEVCLUT16) * 256));

  } else
  {
    // Set the Gamma Save flag, so that it would be flushed to the registry
    // Gamma will be saved only if adjusted via CWDDE interface
    //lpDriverData->ulFlags |= DRIVERDATA_SAVEGAMMA;

    MOVEMEMORY((LPVOID)lpDriverData->aGamma16,
               (LPVOID)lpaGamma16,
               (sizeof(DEVCLUT16) * 256));
  }

  ulControllers = lpHDE->aControllerMap[ulDriverID];
  i = 0;

  // loop through the specified controller programming gamma correction
  // if the controller is active.

  while((ulControllers != 0) && (i < lpHDE->ulControllersCount))
  {
    if (ulControllers & 1)
    {
      lpController = (LPDEVGCO)&lpHDE->aControllers[i];

      // if this controller was specified, test if it is active, before
      // programming the gamma correction.

      if (lpController->lpHWED->ulFunctionHooks & GCO_HOOK_GAMMA16)
      {
        (*lpController->lpHWED->pfnSetGamma16Correction)(lpController->hGCO,
                                                         i,
                                                         lpaGamma16);
      } else
      {
        // legacy GCO's don't support 16bit gamma correct, hence DAL will
        // accomodate the 8bit format, by performing the truncation
        // directly before calling the GCO to set gamma correction

        lpaGamma = (LPDEVCLUT)aGamma;
        vConvert16To8Gamma(lpaGamma16, lpaGamma);

        (*lpController->lpHWED->pfnSetGammaCorrection)(lpController->hGCO,
                                                       i,
                                                       lpaGamma);
      }
    }

    i += 1;
    ulControllers = (ulControllers >> 1);
  }

  DALDEBUG((DALDBG_ENTRY_EXIT, "DALSetGamma16Correction - Exit"));
}

// -------------------------- Private Routine ---------------------------------
// If DALRULE2_ENABLELOG registry option is enabled, this function will fire up
// ATI_MESSAGECODE_DAL_LOGINFO_xxxx driver message event to inform ExtEvent 
// Utility to take down log informations
// Note: Implementation is calling convention sensitive. So force __cdecl constraint
// ----------------------------------------------------------------------------
void __cdecl LogInfo( LPHW_DAL_EXTENSION lpHDE, ULONG ulDriverId, ULONG ulMessageCode, 
                      ULONG ulNumOfParams, ... )
{
  ULONG           aBuf[256/sizeof(ULONG)]; 
  LPULONG         lpParams = (&ulNumOfParams) + 1; 

  if ( !lpHDE || !(lpHDE->ulDalRule2 & DALRULE2_ENABLELOG) ) return; 

  // Test buffer overflow
  if ( ulNumOfParams > sizeof(aBuf)/sizeof(ULONG) - 1 ) 
    ulNumOfParams = sizeof(aBuf)/sizeof(ULONG) - 1; 

  DDLMessageCode( lpHDE->hDDL, ulDriverId, ulMessageCode, (ulNumOfParams+1)*sizeof(ULONG), aBuf ); 
}; 

/******************************Public*Routine******************************\
*
* VOID DALSetPalette
*
* Programs the palette of the specified controllers.
*
* Note: DAL does nothing if the controller is inactive.  If multiple
*       controllers are specified in the same call, both need be working
*       cooperatively from the same desktop, and hence will require the
*       same palette.
*
\**************************************************************************/

VOID DALSetPalette(
HDAL hDAL,
ULONG ulDriverID,
LPDEVCLUT lpPalette,
ULONG ulStart,
ULONG ulLength)
{
  LPHW_DAL_EXTENSION  lpHDE;
  LPDEVGCO            lpController;
  ULONG               ulControllers;
  ULONG               i;

  DALDEBUG((DALDBG_ENTRY_EXIT, "DALSetPalette - Entry"));
  DALASSERT((hDAL != NULL), "DAL handle 'hDAL' is NULL!");

  // grab the structure for the DAL out of the DDL's handle to it
  lpHDE = (LPHW_DAL_EXTENSION)hDAL;
  ulControllers = lpHDE->aControllerMap[ulDriverID];

  i = 0;

  // loop through the specified controller programming the palette if
  // the controller is active and in a palletized mode.

  while((ulControllers != 0) && (i < lpHDE->ulControllersCount))
  {
    if (ulControllers & 1)
    {
      // if this controller was specified, test if it is active, and in
      // a palletized pixel depth (namely 8bpp) then program the palette.

      lpController = (LPDEVGCO) &lpHDE->aControllers[i];
      if ((lpController->ulFlags & GCO_ACTIVE) &&
          (8 == lpController->sModeInfo.ulBitsPerPixel))
      {
        (*lpController->lpHWED->pfnSetPalette)(lpController->hGCO,
                                               i,
                                               lpPalette,
                                               ulStart,
                                               ulLength);
      }
    }

    i += 1;
    ulControllers = (ulControllers >> 1);
  }
  DALDEBUG((DALDBG_ENTRY_EXIT, "DALSetPalette - Exit"));
}


/****************************Private*Routine*******************************\
*
* VOID vFillModeChangeInfo()
*
* Fills in MODECHANGEINFO structure.  
*
\**************************************************************************/

VOID vFillModeChangeInfo(
LPHW_DAL_EXTENSION lpHDE,
LPDEVMODE_INFO     lpMI,
LPDEVGCO           lpController,
ULONG              ulDisplays,
LPEVENTINFO        lpEventInfo)
{
  ULONG       i;
  LPDEVGDO    lpDisplay;
  ULONG       ulDisplayTypes;

  DALASSERT((lpEventInfo  != 0), "vFillModeChangeInfo - Invalid lpEventInfo" );
  DALASSERT((lpMI         != 0), "vFillModeChangeInfo - Invalid lpMI pointer");
  DALASSERT((lpController != 0), "vFillModeChangeInfo - Invalid lpController");

  // initialize ModeChangeInfo structure by zeroed it out
  ZEROMEMORY(lpEventInfo, sizeof(EVENTINFO));

  // fill in structure size
  lpEventInfo->ulSize = sizeof(EVENTINFO);

  // fill in desktop size
  MOVEMEMORY(&lpEventInfo->sDesktop, &lpController->siDesktop, sizeof(SIZE));

  // fill in mode info
  if( ulDisplays )
  {
    MOVEMEMORY(&lpEventInfo->sModeInfo, lpMI, sizeof(DEVMODE_INFO));
  }

  // fill in controller index
  lpEventInfo->ulController = lpController->ulController;

  // fill in driver ID
  for (i = 0; i < MAX_NUMBER_CONTROLLERS; i++)
  {
    if (lpHDE->aDriverData[i].ulFlags & DRIVERDATA_ENABLED)
    {
      if (lpHDE->aControllerMap[i] & VECTORFROMINDEX(lpController->ulController))
      {
        lpEventInfo->ulDriverID = i;
        break;
      }
    }
  }

  // Set DAL_MODECHANGE_MAJOR_DESKTOPRESORBPPCHANGE if needed
  if ((lpHDE->aDriverData[lpEventInfo->ulDriverID].sMode.ulPelsWidth != 
       lpHDE->aDriverData[lpEventInfo->ulDriverID].sLastMode.ulPelsWidth)     ||
      (lpHDE->aDriverData[lpEventInfo->ulDriverID].sMode.ulPelsHeight != 
       lpHDE->aDriverData[lpEventInfo->ulDriverID].sLastMode.ulPelsHeight)    ||
      (lpHDE->aDriverData[lpEventInfo->ulDriverID].sMode.ulBitsPerPixel!= 
       lpHDE->aDriverData[lpEventInfo->ulDriverID].sLastMode.ulBitsPerPixel))
  {
    // desktop resolution or color depth change
    lpEventInfo->ulModeMajorFlag |= DAL_MODECHANGE_MAJOR_DESKTOPRESORBPPCHANGE;
  }

  // Set DAL_MODECHANGE_MINOR_VIEWRESCHANGE if needed
  if (lpController->sModeInfo.ulPelsWidth    != lpMI->ulPelsWidth  ||
      lpController->sModeInfo.ulPelsHeight   != lpMI->ulPelsHeight)  
  {
    // Check for view change
    lpEventInfo->ulModeMinorFlag |= DAL_MODECHANGE_MINOR_VIEWRESCHANGE ; 
  }

  // Set DAL_MODECHANGE_MINOR_RATIOMETRICEXPANSIONON if needed
  if (lpController->ulFlags & GCO_EXPANSION)
  {
    for (i = 0; i < lpHDE->ulDisplaysCount; i++)
    {
      if (ulDisplays & VECTORFROMINDEX(i))
      {
        lpDisplay      = &lpHDE->aDisplays[i];
        ulDisplayTypes = lpDisplay->lpHWED->ulDisplayType;
        if (ulDisplayTypes & HW_DISPLAY_TYPES_DIGITAL_MASK)
        {
          if (   lpMI->ulPelsWidth  < lpDisplay->sMaxModeInfo.ulPelsWidth
              || lpMI->ulPelsHeight < lpDisplay->sMaxModeInfo.ulPelsHeight)
          {
            lpEventInfo->ulModeMinorFlag |= DAL_MODECHANGE_MINOR_RATIOMETRICEXPANSIONON;
            break;
          }
        }
      }
    }
  }

  
  if(lpController->ulStateChangeFlags & GCO_EXPANSION_CHANGE)
  {

    lpEventInfo->ulModeMinorFlag |= DAL_MODECHANGE_MINOR_EXPANSIONONCHANGE;
  }
}


/****************************Private*Routine*******************************\
*
* USHORT usChecksum()
*
* Performs checksum
*
\**************************************************************************/
USHORT usCheckSum(
LPVOID lpBuffer,
ULONG  ulSize   )
{
  ULONG    i;
  ULONG    ulSum    = 0;
  USHORT   usResult = 0;
  LPUSHORT lpusBuf  = (LPUSHORT)lpBuffer;

  if (lpBuffer)
  {
    for (i = 0; i < ulSize / sizeof(USHORT); i++)
    {
      ulSum += (ULONG)(*lpusBuf++);
    }

    if (ulSize % sizeof(USHORT))
    {
      // take care of the odd byte if any
      ulSum += *((BYTE*)lpusBuf);
    }

    ulSum  = (ulSum >> 16) + (ulSum & 0xFFFF); //add high-16 to low-16
    ulSum += ulSum >> 16;                      //add carry
    usResult = (USHORT)~ulSum;                 //one-complement, trucate to 16 bits
  }

  return usResult;
}


/****************************Private*Routine*******************************\
*
* ULONG bGetDetailedTimingIndexFromCache()
*
* Retrieves detailed timing for the specified mode from the cache.
*
\**************************************************************************/
ULONG bGetDetailedTimingIndexFromCache(
LPHW_DAL_EXTENSION lpHDE,
ULONG              ulDisplayType,
LPDEVMODE_INFO     lpMI          )
{
  ULONG                   i;
  LPREGDETAILEDTIMINGINFO lpCache;
  
  DALASSERT((NULL != lpHDE), "bGetDetailedTimingFromCache - invalide DAL handle!");
  DALASSERT((NULL != lpMI), "bGetDetailedTimingFromCache - invalid mode handle!");

  if (DALRULE1_READDETAILEDTIMINGPERMODE != lpHDE->ulDalRule1)
  {
    for (i = 0; i < MAX_CACHEDDTM; i++)
    {
      lpCache = &lpHDE->aCachedDetailedTimings[i];

      if (   ((USHORT)lpMI->ulPelsWidth        == lpCache->usPelsWidth       )
          && ((USHORT)lpMI->ulPelsHeight       == lpCache->usPelsHeight      )
          && ((USHORT)lpMI->ulDisplayFrequency == lpCache->usDisplayFrequency))
      {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片 | 丝瓜av网站精品一区二区| 国产综合久久久久久鬼色| 日韩美女视频在线| 经典三级在线一区| 亚洲婷婷在线视频| 欧美美女黄视频| 久久激情五月激情| 中文字幕欧美一| 欧美精品tushy高清| 欧美理论片在线| 日韩一级片网址| 99久久精品免费精品国产| 一二三四区精品视频| 91精品综合久久久久久| 国产91丝袜在线播放0| 亚洲综合色自拍一区| 精品99一区二区三区| 久久久综合视频| 色狠狠av一区二区三区| 精品一区二区三区在线视频| 久久成人免费网站| 国产精品一品视频| 琪琪一区二区三区| 亚洲最大成人综合| 男女性色大片免费观看一区二区| 日韩精品免费专区| 国产乱妇无码大片在线观看| 99国内精品久久| 欧美日韩免费在线视频| 国产精品18久久久久久久久| 最近日韩中文字幕| 午夜日韩在线观看| 国产精品美女久久福利网站| 777色狠狠一区二区三区| 久久蜜桃一区二区| **网站欧美大片在线观看| 首页欧美精品中文字幕| 丁香一区二区三区| 7777精品伊人久久久大香线蕉的 | 亚洲精品乱码久久久久久日本蜜臀 | 久久精品国内一区二区三区| 成人美女在线视频| 久久9热精品视频| 91日韩精品一区| 色94色欧美sute亚洲线路一ni | 亚洲精品久久久蜜桃| 免费观看在线综合色| 97成人超碰视| 精品久久人人做人人爰| 欧美剧情片在线观看| 中文字幕+乱码+中文字幕一区| 欧美成人一级视频| 18成人在线观看| 国产尤物一区二区| 精品一区二区三区的国产在线播放| av男人天堂一区| 一本大道久久精品懂色aⅴ| 91天堂素人约啪| 久久精品亚洲精品国产欧美| 中文字幕在线不卡一区二区三区| 久久国产综合精品| 欧美日韩国产一二三| 精品成人一区二区| 日韩成人av影视| 国产精品一区二区免费不卡 | 精品免费99久久| 偷拍一区二区三区四区| 在线视频一区二区三区| 欧美一二三区在线| 亚洲一区二区美女| 欧美做爰猛烈大尺度电影无法无天| 欧美激情一区二区三区全黄 | 亚洲欧洲成人av每日更新| 国产精品性做久久久久久| 亚洲精品在线网站| 国内精品不卡在线| 日韩精品一区二区三区四区视频 | 国产一区二区不卡| 欧美精品一区二区三区视频| 日本不卡不码高清免费观看| 91精品国产丝袜白色高跟鞋| 日韩欧美激情一区| 精品一区二区三区视频在线观看| 欧美一区二区三区性视频| 美女国产一区二区| 色综合久久66| 亚洲精品国产一区二区精华液| 99国产精品视频免费观看| 亚洲特黄一级片| 在线观看区一区二| 日韩国产一区二| 久久影视一区二区| 肉色丝袜一区二区| 欧美成人a在线| 粉嫩av一区二区三区| 综合久久国产九一剧情麻豆| 91亚洲精华国产精华精华液| 亚洲成人资源网| eeuss鲁一区二区三区| 亚洲欧美日韩久久| 不卡在线视频中文字幕| 日韩欧美一区二区不卡| 国产精品伊人色| 亚洲日本在线看| 欧美一区二区在线观看| 国产成人亚洲精品狼色在线| 一区二区三区高清| 日韩欧美一级精品久久| 成人少妇影院yyyy| 亚洲h动漫在线| 中文字幕av不卡| 欧美疯狂做受xxxx富婆| 国产成人午夜高潮毛片| 一区二区三区不卡在线观看| 欧美一区二区视频在线观看2020| 丁香网亚洲国际| 五月激情六月综合| 中文字幕精品综合| 91精品欧美久久久久久动漫| 国产a级毛片一区| 五月天欧美精品| 国产精品久久久久久一区二区三区| 免费人成黄页网站在线一区二区| 国产精品视频一二三| 91精品综合久久久久久| 91免费版在线看| 国产精品亚洲午夜一区二区三区 | 欧美顶级少妇做爰| 不卡av在线免费观看| 美日韩一级片在线观看| 亚洲一区欧美一区| 中文字幕在线观看一区| 国产校园另类小说区| 日韩一区和二区| 欧美日韩国产免费一区二区| 99视频国产精品| 国产成人亚洲综合色影视| 麻豆精品视频在线观看| 亚洲国产一区视频| 日韩欧美亚洲一区二区| 在线亚洲精品福利网址导航| 99久久国产综合精品女不卡| 国产91丝袜在线18| 国内成人精品2018免费看| 六月婷婷色综合| 久久99热狠狠色一区二区| 婷婷综合五月天| 午夜精品久久久久久久蜜桃app| 日韩毛片高清在线播放| 亚洲视频免费在线| 亚洲免费观看在线视频| 日韩美女精品在线| 亚洲精品中文在线| 亚洲精品日日夜夜| 亚洲国产精品一区二区久久| 一区二区三区中文在线观看| 亚洲一区二区视频在线观看| 亚洲综合精品久久| 亚洲成人av福利| 肉色丝袜一区二区| 激情五月激情综合网| 国产成人亚洲综合a∨婷婷| 国产成人8x视频一区二区| 国产成人精品免费| 99精品欧美一区二区三区小说 | 制服.丝袜.亚洲.中文.综合| 7878成人国产在线观看| 精品国产三级电影在线观看| 久久久久99精品国产片| 中文字幕视频一区| 亚洲午夜久久久久久久久电影网 | 国产剧情一区二区三区| 成人午夜精品一区二区三区| 91色porny在线视频| 欧美一a一片一级一片| 丁香激情综合国产| 91久久久免费一区二区| 欧美精品vⅰdeose4hd| 日韩高清不卡一区| **欧美大码日韩| 日韩欧美高清dvd碟片| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品久久一卡二卡| 一区二区在线观看免费| 视频在线在亚洲| 国产精品美女久久久久aⅴ| 亚洲高清免费视频| 色8久久精品久久久久久蜜| 国产精品国产三级国产aⅴ原创 | 亚洲综合成人网| 99麻豆久久久国产精品免费| 久久久91精品国产一区二区精品| 日本在线不卡视频一二三区| 欧美日本在线观看| 日韩av在线发布| 日韩色视频在线观看| 日韩av午夜在线观看| 在线综合亚洲欧美在线视频| 亚洲成av人片www|