青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Video memory, AGP memory and System memory

在讀DirectXSDK中關于內存池的描述時,對于Video memory, AGP memory and System memory這三個概念比較模糊,google了一下,找到了一些很好的解釋。引用如下:

Those two identifiers are hints to the driver for how the buffer will be used, to optimize how the card accesses the data. They make sense even without AGP memory.

On systems with AGP memory, there are three classes of memory:

1) System Memory. This is cached, and reasonably fast to read from and write to with the CPU. However, it typically needs an additional copy before the graphics card can use it. System and scratch pool memory goes here.

2) AGP Memory. This is still CPU-local RAM, but it is not cached. This means that it's slow to read from, and it's slow to write to, UNLESS you write sequentially, without doing too much other memory traffic inbetween, and overwrite every byte, so that the write combiners don't need to fetch lines from RAM to do a combine. Thus, generating software-transformed vertices as a stream into this buffer might still be fast. For the GPU, the AGP memory is directly accessible, so no additional copy is needed. Dynamic pool memory goes here.

3) Video Memory. This is RAM that's local to the GPU. It typically has insanely high throughput. It is accessible over the bus for the CPU, but going over the bus is really slow; typically both for reading and for writing. Thus writing directly into this memory (or even worse, reading out of it), is not recommended. Default pool memory goes here.

On systems with PCI-Express, some of the AGP vs system memory differences are reduced, but the usage hints you're giving the driver ("I will change the data by writing it sequentially" vs "I will not change the data much") are still useful for optimizing performance.

Video memory is the memory chips physically located on the card. The card can easily access this memory, while reading it from the CPU is extremely slow.

AGP memory a part of your main memory on the motherboard that has been set aside for talking to the graphics card. The card and your CPU can access this memory at a decent speed.

This pageshows that your BIOS "AGP aperture size" controls the size of your AGP memory, and explains how "reducing the AGP aperture size won't save you any RAM. Again, what setting the AGP aperture size does is limit the amount of RAM the AGP bus can appropriate when it needs to. It is not used unless absolutely necessary. So, setting a 64MB AGP aperture doesn't mean 64MB of your RAM will be used up as AGP memory. It will only limit the maximum amount that can be used by the AGP bus to 64MB (with a usable AGP memory size of only 26MB)."

1) video memory can mean one of two things depending on the context the term is used in:

a. video memory is generally any memory which is used by the graphics chip.

b. video memory (correctly "local video memory") is memory that exists on the graphic card itself (i.e. RAM chips that live on the graphics card, they are 'local' to the graphics chip).


2) AGP memory is main memory on your system motherboard that has been specially assigned for graphics use. The "AGP Aperture" setting in your system BIOS controls this assignment. The more you have assigned for AGP use, the less you have for general system use. AGP memory is sometimes also known as "non-local video memory".


3a) 'Local' video memory is very fast for the graphics chip to read from and write to because it is 'local' to the graphics chip.

3b) 'Local' video memory is extremely slow to read from using for the system CPU, and reasonably slow to write to using the system CPU.
This is for a number of reasons; partly because the memory is physically on a different board (the graphics card) to the CPU (i.e. it's not 'local' for the CPU); partly because that memory isn't cached at all for reads using the CPU, and only burst cached for writes; partly due to the way data transfers over bus standards such as AGP must be done.


4a) AGP memory is reasonably fast for the graphics chip to read from or write to, but not as fast as local video memory.

4b) AGP memory is fairly slow to read from using the system CPU because it is marked as "Write Combined" so any reads don't benefit from the L2 and L1 caches (i.e. each read is effectively a cache-miss).
AGP memory is however faster than local video memory to read from using the CPU since it is local to the CPU.

4c) AGP memory is reasonably fast to write to using the system CPU. Although not fully cached, "Write Combined" memory uses a small buffer that collects sequential writes to memory (32 or 64 bytes IIRC) and writes them out in one go. This is why sequential access of vertex data using the CPU is preferable for performance.


5) D3DUSAGE_DYNAMIC is only a hint to the display driver about how you intend using that resource, usually it will give you AGP memory, but it isn't guaranteed (so don't rely it!).


6) Generally, for vertex buffers which you need to Lock() and update using the CPU regularly at runtime should be D3DUSAGE_DYNAMIC, and all others should be static.


7) Graphics drivers use techniques such as "buffer renaming" where multiple copies of the buffer are created and cycled through to reduce the chance of stalls when dynamic resources are locked. This is why it's essential to use the D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE locking flags correctly if you want good performance. It's also one of the many reasons you shouldn't rely on the data pointer from a Lock() after the resource has been unlocked.


8) General advice for good performance:
- treat all graphics resources as write-only for the CPU, particularly those in local video memory. CPU reads from graphics resources is a recipe for slowness.

- CPU writes to locked graphics resources should be done sequentially.

- it's better to write all of a vertex out to memory with the CPU than it is to skip elements of it. Skipping can harm the effectiveness of write combining, and even cause hidden reads in some situations (and reads are bad - see above).


since the "local video memory" is fast for video card to manipulate, and the video card dedicated to GRAPHICS PROCESS,why bother to use the "AGP memory"?
is that only because the "local video memory" may be not enough for graphic data storage?
what role does the CPU play in the process of graphics??

Yes. That's one of the main reasons. AGP comes from a time (~10 years ago!) when a typical graphics card would have, say, 2MB of local video memory and a typical PC system had 64-128MB of main system memory, so it made sense to set some system memory aside for situations where there wasn't enough local memory.

In these days of monster graphics cards with 512MB of local video memory, it's less likely used as an overflow.


Another reason is dynamic graphics data - any data that needs to be regularly modified with the CPU is usually better off in AGP memory (it's write combined, but it's local to the CPU too, so uses less CPU time to access)
Not very much these days. Mostly application-side jobs like writing vertex data into locked buffers, object culling, traversing scene graphs, loading resources into main memory, things like that.
On the D3D and device driver side: handling the D3D API, swizzling and other conversion when some types of resources are locked/unlocked [I believe some GPUs can even do their own swizzling now though], and setting up the command buffer for the GPU.

Before hardware T&L, the CPU also handled all vertex processing.

The fact that modern GPUs now handle so much of the graphics pipeline makes avoiding unnecessary serialization between CPU and GPU all the more important (i.e. stalls where one has a resource locked and the other wants to use it), thus things like buffer renaming. Serialization between CPU and GPU throws away the GPUs processing ability.

原貼:http://www.gamedev.net/community/forums/topic.asp?topic_id=388869

posted on 2007-07-11 09:47 隨便寫寫 閱讀(1167) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿(1)

隨筆分類(30)

隨筆檔案(16)

文章分類(18)

文章檔案(9)

鏈接

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品毛片| 亚洲国产日韩一区| 香蕉久久夜色精品国产使用方法| 亚洲日本激情| 欧美三级电影网| 久久全球大尺度高清视频| 国产精品久久91| 久久精品日韩欧美| 久久精品主播| 亚洲免费观看视频| 亚洲午夜av电影| 激情六月婷婷综合| 亚洲高清成人| 国产精品国产三级国产a| 久久大综合网| 麻豆精品精品国产自在97香蕉| 亚洲欧洲日产国码二区| 日韩一级片网址| 国产精品一区在线观看| 美玉足脚交一区二区三区图片| 免费在线一区二区| 一区二区三区蜜桃网| 亚洲欧美日韩一区二区| 亚洲人成免费| 午夜精品久久久久久久蜜桃app | 亚洲激情一区二区三区| 欧美精选一区| 久久久久久噜噜噜久久久精品| 蜜臀99久久精品久久久久久软件| 一区二区三区日韩在线观看| 翔田千里一区二区| 亚洲精品美女91| 午夜久久美女| 中日韩美女免费视频网址在线观看| 亚洲一区二区视频在线| 91久久久国产精品| 欧美在线播放| 亚洲永久免费观看| 欧美77777| 久久琪琪电影院| 国产精品v日韩精品| 欧美激情欧美狂野欧美精品| 国产精品亚洲а∨天堂免在线| 欧美黄色aaaa| 一区在线免费| 亚洲欧美一区二区三区久久| 一区二区免费在线观看| 久久久久久久久岛国免费| 亚洲欧美日韩一区| 欧美三级午夜理伦三级中视频| 美女精品国产| 国产一区二区0| 亚洲欧美日韩一区| 亚洲免费视频一区二区| 欧美日本亚洲韩国国产| 亚洲国产电影| 亚洲国产精品久久久久婷婷884| 欧美伊人影院| 久久久久一区| 国内精品久久久| 欧美在线视频一区二区| 欧美伊人久久大香线蕉综合69| 国产精品福利在线| 亚洲视频一起| 性色一区二区三区| 国产精品亚洲综合| 亚洲综合欧美日韩| 久久不射2019中文字幕| 国产欧美日韩视频在线观看| 亚洲自拍电影| 久久久噜噜噜久久| 黑人一区二区三区四区五区| 久久精品青青大伊人av| 久久亚洲高清| 在线日韩成人| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美成年人视频| 99国产精品视频免费观看一公开| 欧美第一黄网免费网站| 亚洲人成网站色ww在线| 亚洲午夜av电影| 国产伦精品一区二区三区视频黑人 | 欧美在线看片| 国产综合网站| 两个人的视频www国产精品| 亚洲电影中文字幕| 中文亚洲免费| 国产一区二区三区日韩欧美| 久久色中文字幕| 亚洲日本成人在线观看| 亚洲欧美成人一区二区三区| 国产精品稀缺呦系列在线| 久久精品欧美| 亚洲精品视频一区二区三区| 亚洲欧美日韩成人| 国外成人免费视频| 欧美精品v国产精品v日韩精品| 99人久久精品视频最新地址| 久久精品日产第一区二区三区| 在线日韩av永久免费观看| 欧美日韩福利在线观看| 香蕉久久精品日日躁夜夜躁| 欧美va亚洲va日韩∨a综合色| 一二三区精品福利视频| 国产一区二区成人久久免费影院| 美女网站在线免费欧美精品| 亚洲一区二区三区在线| 欧美福利小视频| 欧美一区激情| 亚洲久久一区二区| 国产精品一二三四| 模特精品在线| 欧美一区二区三区男人的天堂| 亚洲第一网站免费视频| 亚洲欧美精品在线| 亚洲国产精品成人| 国产视频不卡| 欧美视频中文字幕| 欧美wwwwww| 久久免费99精品久久久久久| 在线亚洲欧美专区二区| 亚洲第一在线综合在线| 久久黄色影院| 香蕉尹人综合在线观看| 99这里只有精品| 亚洲成人在线视频网站| 国产亚洲一区精品| 国产精品一区二区三区观看| 欧美—级在线免费片| 久久久久久夜| 久久99伊人| 香蕉免费一区二区三区在线观看| 亚洲精品一区二区三区蜜桃久| 免费在线看成人av| 久久精品成人| 久久不射网站| 欧美一区二区三区在线观看视频| 中文在线资源观看视频网站免费不卡| 亚洲电影在线看| 在线观看三级视频欧美| 国产一区清纯| 激情综合在线| 在线精品视频免费观看| 在线观看日韩一区| 亚洲第一福利在线观看| 在线观看不卡| 亚洲激精日韩激精欧美精品| 亚洲国产精品久久久久婷婷老年| 永久91嫩草亚洲精品人人| 激情校园亚洲| 亚洲电影免费在线观看| 亚洲国产一区在线| 亚洲精品在线三区| 99综合电影在线视频| 夜夜嗨一区二区| 亚洲视频免费在线观看| 亚洲一区二区三区四区五区黄| 亚洲社区在线观看| 午夜欧美电影在线观看| 久久国产精品久久精品国产| 久久免费午夜影院| 欧美jizzhd精品欧美巨大免费| 欧美激情一区在线| 一本一本a久久| 亚洲欧美日韩中文播放| 久久精品国产亚洲一区二区三区| 久久综合久久综合这里只有精品| 欧美大学生性色视频| 国产精品成人aaaaa网站| 国产日韩专区在线| 亚洲国产精品久久久| 亚洲图片在线观看| 久久精品毛片| 亚洲国产一区二区三区a毛片| 亚洲免费观看| 久久国产婷婷国产香蕉| 欧美不卡一卡二卡免费版| 国产精品国产三级国产专播品爱网| 国产色综合网| 一本色道久久加勒比88综合| 香蕉久久夜色精品国产使用方法| 免费日韩一区二区| 制服诱惑一区二区| 久久亚洲免费| 国产精品久久久亚洲一区| 在线观看欧美| 亚欧成人精品| 亚洲欧洲精品一区二区精品久久久| 亚洲一区二区三区四区五区午夜| 久久久夜色精品亚洲| 国产精品久久久一区二区三区| 在线精品视频在线观看高清 | 国产一区二区三区四区在线观看 | 亚洲欧美国产视频| 欧美大色视频| 香蕉成人啪国产精品视频综合网| 欧美国产日产韩国视频| 国内精品美女av在线播放| 亚洲欧美国产精品专区久久| 欧美国产高潮xxxx1819|