您的位置:永利国际官网登录 > 永利国际开户 > 测验VGA12H直接写屏速度,正式发表

测验VGA12H直接写屏速度,正式发表

发布时间:2019-07-18 20:27编辑:永利国际开户浏览(158)

    AMD已将其Radeon HD 4850系列显卡授权给至少3家制造产商加工生产,预期不久将如潮水般涌入市场。其中第一家生产并出厂的是Force3D,包括Radeon HD 4850和4870,其它2家的消息AMD似乎对此表示沉默。HEXUS网透露,专业版配备了750MHz的核心频率、512MB的GDDR5显存、有效时钟频率达3,600MHz。而DIGITIMES 科技网发布说,Asustek也发布了一款类似的Radeon HD 4870,同时包括两款显存为DDR3 1GB 和 512MB的HD 4850, GeCube却只有一款512MB DDR3显存的4850。不幸的是具体价格还不清楚。

    • 2.7GHz 四核心 Intel Core i5,芯片内建 6MB 共享 L3 快取
    • LED 背光镜面宽屏幕、分辨率:2560 x 1440 像素
    • 4GB(2GB x 2、1333MHz DDR3)内存,最高可扩充到 16GB
    • 硬盘1TB ,可换为 2TB 硬盘 / 256GB SSD,或 1TB / 2TB 硬盘 256GB SSD
    • AMD Radeon HD 6770M GPU(512MB GDDR5 VRAM)
    • I/O:Thunderbolt x 2、FireWire 800 x 1、USB 2.0 x 4、SDXC 卡插槽、音讯输入 / 输出
    • 4 倍速双层刻录的吸入式 8 倍速 SuperDrive(DVD±R DL/DVD±RW/CD-RW)

     

    永利国际开户送38体验,Read - HEXUS.net, "Force3D jumps the gun, launches its Radeon HD 4870"Read - DigiTimes, "Asustek and GeCube launch ATI Radeon HD 4850-based graphics cards" [Via TG Daily, thanks Kris120890]

    一如上周的预言,今天新款 iMac 正式登场了;全系列皆配备 Thunderbolt I/O(21.5 寸 x 1、27 寸 x 2)、FaceTime HD 视讯模块、最新版的四核心 Intel Sandy Bridge 处理器(Core i5 或 Core i7,频率前者 2.5~3.1GHz,后者则为 2.8GHz 或 3.4GHz),I/O 方面,除了 Thunderbolt 的数量不同外,21.5 寸的版本跟 27 寸一样,皆有四组 USB 埠、一组 FireWire 800、音频输出输入、SDXC 读卡器;屏幕分辨率方面,21.5 寸为 1920 x 1080,27 寸为 2560 x 1440。以下为各型号的规格和售价:

     

    • 2.5GHz 四核心 Intel Core i5,芯片内建 6MB 共享 L3 快取
    • LED 背光镜面宽屏幕、分辨率:1920 x 1080 像素
    • 4GB(2GB x 2、1333MHz DDR3)内存,最高可扩充到 16GB
    • 硬盘500GB
    • AMD Radeon HD 6750M GPU(512MB GDDR5 VRAM)
    • I/O:Thunderbolt x 1、FireWire 800 x 1、USB 2.0 x 4、SDXC 卡插槽、音讯输入 / 输出
    • 4 倍速双层刻录的吸入式 8 倍速 SuperDrive(DVD±R DL/DVD±RW/CD-RW)
    /*
    File:      VGASpeed.c
    Name:      测试VGA12H模式的速度
    Author:    zyl910
    Blog:      http://blog.csdn.net/zyl910/
    Version:   V1.0
    Updata:    2006-11-14
    */
    #include <stdio.h>
    #include <conio.h>
    #include <mem.h>
    #include <dos.h>
    typedef unsigned char BYTE;
    typedef unsigned int  WORD;
    typedef unsigned long DWORD;
    typedef void far* LPVOID;
    #define SCR_W 640
    #define SCR_H 480
    #define SCR_PLANES 4
    #define SCANSIZE_DIB ((SCR_W)/2)
    #define SCANSIZE_VGA ((SCR_W)/8)
    #define SEG_VIDEO 0xA000
    #define WaitVR() while(!(inportb(0x3da)&0x08))
    static volatile DWORD far* const pbiosclock = MK_FP(0x0040, 0x6C);
    #define BIOSCLOCK_F ((double)18.2)
    void repmovsb(LPVOID lpD, LPVOID lpS, WORD cBytes)
    {
     _asm{
      push ds
      push es
      mov cx, cBytes
      les di, lpD
      lds si, lpS
      rep movsb
      pop es
      pop ds;
     }
    }
    void repmovsw(LPVOID lpD, LPVOID lpS, WORD cWords)
    {
     _asm{
      push ds
      push es
      mov cx, cWords
      les di, lpD
      lds si, lpS
      rep movsw
      pop es
      pop ds;
     }
    }
    void repmovsd(LPVOID lpD, LPVOID lpS, WORD cDWords)
    {
     _asm{
      push ds
      push es
      mov cx, cDWords
      les di, lpD
      lds si, lpS
      db 0x66; rep movsw; /* rep movsd */
      pop es
      pop ds
     }
    }
    int main(void)
    {
     BYTE byVGA[SCR_PLANES][SCANSIZE_VGA];
     DWORD cntF;
     int iX, iY;
     BYTE iP;
     WORD pscan;
     BYTE far *pbyV;
     BYTE *pbyM;
     BYTE bymask;
     DWORD tmrold, tmrcur, tmrover;
     double fpsR_C, fpsR_BYTE, fpsR_WORD, fpsR_DWORD;
     double fpsW_C, fpsW_BYTE, fpsW_WORD, fpsW_DWORD;
     double fpsWaitW_BYTE, fpsWaitW_WORD, fpsWaitW_DWORD;
     /* init VGA 12h: 640*480*4bit */
     _asm{
      mov ax, 0x0012;
      int 0x10;
      cld;
     }
     printf("Testing...");
     /* R:C */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3CE; /* gc[4]:Read Map Select */
          mov al, 4;
          out dx, al;
          inc dx;
          mov al, iP;
          out dx, al;
         }
         pbyM = byVGA[iP];
         pbyV = MK_FP(SEG_VIDEO, pscan);
         for(iX=0; iX<SCANSIZE_VGA; iX  )
         {
          *pbyM   = *pbyV  ;
         }
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsR_C = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* W:C */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         pbyM = byVGA[iP];
         pbyV = MK_FP(SEG_VIDEO, pscan);
         for(iX=0; iX<SCANSIZE_VGA; iX  )
         {
          *pbyV   = *pbyM  ;
         }
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsW_C = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* R:Byte */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3CE; /* gc[4]:Read Map Select */
          mov al, 4;
          out dx, al;
          inc dx;
          mov al, iP;
          out dx, al;
         }
         repmovsb(byVGA[iP], MK_FP(SEG_VIDEO, pscan), SCANSIZE_VGA);
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsR_BYTE = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* W:BYTE */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsb(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsW_BYTE = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* R:Word */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3CE; /* gc[4]:Read Map Select */
          mov al, 4;
          out dx, al;
          inc dx;
          mov al, iP;
          out dx, al;
         }
         repmovsw(byVGA[iP], MK_FP(SEG_VIDEO, pscan), SCANSIZE_VGA/2);
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsR_WORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* W:WORD */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsw(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA/2);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsW_WORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* R:DWord */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3CE; /* gc[4]:Read Map Select */
          mov al, 4;
          out dx, al;
          inc dx;
          mov al, iP;
          out dx, al;
         }
         repmovsd(byVGA[iP], MK_FP(SEG_VIDEO, pscan), SCANSIZE_VGA/4);
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsR_DWORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* W:DWORD */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsd(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA/4);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsW_DWORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* WaitW:BYTE */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       WaitVR();
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsb(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsWaitW_BYTE = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* WaitW:WORD */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       WaitVR();
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsw(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA/2);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsWaitW_WORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* WaitW:DWORD */
     do{
      cntF = 0;
      tmrold = *pbiosclock;
      tmrover = tmrold   (DWORD)(BIOSCLOCK_F * 10); /* 10s */
      do{
       memset(byVGA[0], -(1&(((int)cntF)>>0)), SCANSIZE_VGA);
       memset(byVGA[1], -(1&(((int)cntF)>>1)), SCANSIZE_VGA);
       memset(byVGA[2], -(1&(((int)cntF)>>2)), SCANSIZE_VGA);
       memset(byVGA[3], -(1&(((int)cntF)>>3)), SCANSIZE_VGA);
       pscan = 0;
       WaitVR();
       for(iY=0; iY<SCR_H; iY  )
       {
        bymask = 1;
        for(iP=0; iP<SCR_PLANES; iP  )
        {
         _asm{
          mov dx, 0x3C4; /* sc[2]:Map Mask */
          mov al, 2;
          out dx, al;
          inc dx;
          mov al, bymask;
          out dx, al;
         }
         repmovsd(MK_FP(SEG_VIDEO, pscan), byVGA[iP], SCANSIZE_VGA/4);
         bymask <<= 1;
        }
        pscan  = SCANSIZE_VGA;
       }
       cntF  ;
       tmrcur = *pbiosclock;
      }while((tmrcur<tmrover)&&(tmrcur>=tmrold));
      if (tmrcur < tmrold) continue;
     }while(0);
     fpsWaitW_DWORD = cntF / ((tmrcur-tmrold)/BIOSCLOCK_F);
     /* Exit VGA */
     _asm{
      mov ax, 0x0003;
      int 0x10;
     }
     /* out */
     printf("[FPS]/n");
     printf("R_C    :.4f/n", fpsR_C);
     printf("W_C    :.4f/n", fpsW_C);
     printf("R_BYTE :.4f/n", fpsR_BYTE);
     printf("W_BYTE :.4f/n", fpsW_BYTE);
     printf("R_WORD :.4f/n", fpsR_WORD);
     printf("W_WORD :.4f/n", fpsW_WORD);
     printf("R_DWORD:.4f/n", fpsR_DWORD);
     printf("W_DWORD:.4f/n", fpsW_DWORD);
     printf("WaitW_B:.4f/n", fpsWaitW_BYTE);
     printf("WaitW_W:.4f/n", fpsWaitW_WORD);
     printf("WaitW_D:.4f/n", fpsWaitW_DWORD);
     return 0;
    }
    • 2.7GHz 四核心 Intel Core i5(可升级到 2.8GHz 四核心 Core i7 处理器),芯片内建 6MB 共享 L3 快取
    • LED 背光镜面宽屏幕、分辨率:1920 x 1080 像素
    • 4GB(2GB x 2、1333MHz DDR3)内存,最高可扩充到 16GB
    • 硬盘1TB,可换为 2TB 硬盘 / 256GB SSD,或 1TB / 2TB 硬盘 256GB SSD
    • AMD Radeon HD 6770M GPU(512MB GDDR5 VRAM)
    • I/O:Thunderbolt x 1、FireWire 800 x 1、USB 2.0 x 4、SDXC 卡插槽、音讯输入 / 输出
    • 4 倍速双层刻录的吸入式 8 倍速 SuperDrive(DVD±R DL/DVD±RW/CD-RW)

    File:      VGASpeed.txt
    Name:      测试VGA12H模式的速度
    Author:    zyl910
    Blog:     
    Version:   V1.0
    Updata:    2006-11-14

    21.5 寸进阶款

     

    27 寸进阶款

     

    本文由永利国际官网登录发布于永利国际开户,转载请注明出处:测验VGA12H直接写屏速度,正式发表

    关键词: 永利国际开户