Welcome, Unregistered.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Reply
Old 13-Aug-2002, 13:29   #1
JF_Aidan_Pryde
Member
 
Join Date: Feb 2002
Location: Sydney, Australia
Posts: 593
Send a message via MSN to JF_Aidan_Pryde
Default The AGP bus, what kind of bottleneck?

I've read many developers cry about the need for faster AGP (8x). They say that triangles are getting bottlenecked at the AGP bus. Is this a real problem?

Every real-world (or even synthetic) tests show no more than 5% improvement with AGP bus doubling in bandwidth. AGP has been the least benchmarked bottleneck in 3D graphics, and there just seem to be no problem with it in terms of bandwidth.

What is the main possible bottlenecks for the AGP?

So far I've thought of

1) Huge triangle trafic
2) Large textures over flowing the onboard RAM
3) ?

Thoughts?
JF_Aidan_Pryde is offline   Reply With Quote
Old 13-Aug-2002, 13:45   #2
RussSchultz
Professional Malcontent
 
Join Date: Feb 2002
Location: HTTP 404
Posts: 2,855
Default

Just recently, Ben6 (I think) was complaining that his Radeon suddenly got a vastly reduced 3dmark score. The end result was his motherboard/video card suddenly decided that AGP2x was as good as it was going to get.

So it obviously does something. (Though, I do remember the idiotic wars about AGP being useless when AGP2x came out)
RussSchultz is offline   Reply With Quote
Old 13-Aug-2002, 15:29   #3
rubank
Member
 
Join Date: Jun 2002
Location: Sweden
Posts: 147
Default

If it is of any interest:

I ran Comanche4 benchmark in AGP2x and 4x resp.
Triangles/sec was up some 17% at AGP4x, (while the benchmark score was up ~14%). This at 10x7x32.

This with an old Radeon32DDR, on a KT266A m/b with an Athlon XP@ 1523 Mhz.
rubank is offline   Reply With Quote
Old 13-Aug-2002, 15:32   #4
Hyp-X
Irregular
 
Join Date: Feb 2002
Posts: 1,170
Default Re: The AGP bus, what kind of bottleneck?

Quote:
Originally Posted by JF_Aidan_Pryde
I've read many developers cry about the need for faster AGP (8x). They say that triangles are getting bottlenecked at the AGP bus. Is this a real problem?

Every real-world (or even synthetic) tests show no more than 5% improvement with AGP bus doubling in bandwidth. AGP has been the least benchmarked bottleneck in 3D graphics, and there just seem to be no problem with it in terms of bandwidth.

What is the main possible bottlenecks for the AGP?

So far I've thought of

1) Huge triangle trafic
2) Large textures over flowing the onboard RAM
3) ?

Thoughts?
When there are large textures overflowing - a fast AGP is never fast enough.
There is two solutions available when the video ram is not enough to store all textures:
a.) texture management
b.) texturing from AGP memory

a.) With texture management you load all your textures in system memory, and start with a clean video memory. (Apart from the framebuffer of course.)
When rendering a scene when encountering a texture which is not in the video memory, space is allocated for it in the vidmem, and the texture is copied there and the drawing call is executed with the vidmem version of the texture.
When there is not enough space, the last recently used texture is discarded (freed) from vidmem.

b.) The other method just starts loading textures needed for the level into vidmem until there is space. When there's no more space the remaining textures is loaded into AGP memory. (It's a good idea to load textures in some priority order so the highest priority textures end up in vidmem.)
Drawing calls uses the texture from vidmem or AGP mem depending where it was placed.

Both method have their advantages and disadvantages, and are affected by AGP speed differently.
Both methods are available in D3D, and it's the developers choice.
In OGL "texture management" is the default choice, I don't know if a developer can chose method B.

Both methods run smoothly if all the textures in a level can be fit in vidmem. (Would be the shame if this wasn't the case.)
In this case AGP speed is not interesing.

When there are more textures:
a.) It runs smoothly while you are in one area where all textures can fit in the vidmem. When you move from one area to other you might experience a slight pause or lag, when the new texture is uploaded.
With faster AGP the lag will be smaller, but it will always be there.

If you go to an area where there are more textures than vidmem, the FPS goes down radically. This is where the AGP speed counts the most, but it'll never be good with any speed AGP, partly because this method does not use the bandwidth efficiently.

b.) You will experience slow-downs when you are in an area where the textures in AGP memory regardless how much textures are used in that area. It might be so that a complex room with textures in vidmem is faster than a simple small room with AGP memory textures.

This method also limits the maximum amount of textures to the sum of vidmem + AGP memory which is unpredictable since not all cards/drivers support AGP texturing in the first place. Also there's an option to disable it in many drivers/tweekers which has been used to increase stability in many configurations -> some users will disable it by default.

None of the two is really efficient:
a.) It uploads the whole texture / all detail levels, regardless of which part of it will be needed. (Might be non if the surface uses it is occluded!).

b.) It does not cache (except on 3dlabs cards) the texture so if it is used on multiple surfaces it'll be read multiple times.

... to be continued.
Hyp-X is offline   Reply With Quote
Old 13-Aug-2002, 15:37   #5
Joe DeFuria
Regular
 
Join Date: Feb 2002
Posts: 5,951
Default

Quote:
(Though, I do remember the idiotic wars about AGP being useless when AGP2x came out)
Actually, those wars were not really "idiodic." They were mostly about the "usefulness" of AGP texturing for games IIRC. I don't think anyone really argued against having more bandwidth in general. On the other hand, I don't think that anyone today could care less if a card supports AGP texturing directly from system memory or not.

EDIT: Ahhh...I see Hyp-X is laying a good foundation about what those "idiodic" wars were all about.
Joe DeFuria is offline   Reply With Quote
Old 13-Aug-2002, 16:06   #6
Hyp-X
Irregular
 
Join Date: Feb 2002
Posts: 1,170
Default

With texturing the developers of a games try not to use more textures than can be fit in vidmem of their high-end target, and provide a "texture detail" setting for their low/mid-end target and the problem is considered solved.

One thing that I didn't wrote about is dynamic textures. They are present in the original Unreal engine, and what are to be avoided at all cost. They cause all kinds of bottleneck causing the engine to not scale well with the hardware...

Geometry is similar to textures except that dynamic geometry is rarely avoidable.

For static geometry everything holds that I wrote about textures.

Dynamic geometry on the other hand is usually placed in AGP memory and is used from there regardless of the management method used for static one.

Reasons for using dynamic geometry: using software T&L (duh), using an effect that the card cannot do in hardware (no VS, etc) or bad programming...

I can see only one valid point in the above list

Example: character blending (tweening) on a card (like GF2) that cannot do it in hardware.
Since the geometry data is read trough the AGP bus it is vital to know how the GPU caches work or it will read the vertices multiple times (-> bad).
In this example with AGP 1x the bottleneck is clearly the AGP. With AGP 2x it depends on the actual machine. With AGP 4x the bottleneck is usually - the memory bus of the CPU...

On other hand this can be all done with the GPU if it supports Vertex Shaders or it supports Tweening (Radeon). It allows putting the source geometry data in static buffers, benefiting from it's advantages.

Some of the reasons that some applications is slow - is no doubt caused by the developers failing to understand how the hardware works, what should be done on the CPU, what on the GPU, etc.
(And I can't claim to know all, in fact I just starting to realize how much more should I learn about how 3D hardware / drivers work.)
Hyp-X is offline   Reply With Quote
Old 13-Aug-2002, 22:49   #7
Nagorak
Member
 
Join Date: Jun 2002
Posts: 854
Default

If you think about it, the increase in AGP bandwidth isn't really making a difference, relatively speaking. I mean, think about it, originally with AGP 1.0 spec we had cards with 8-16 MBs of memory. Then we had AGP 2x with 32 MB cards. Then 4x and we were getting into 64 MB (and even 128 MB). Now 128 MB cards are the norm.

Presumably video memory has been increasing because texture detail (and size) have been increasing. So now we have cards that can transfer across the AGP bus 8 times as fast, but they also have 8 times as much memory and presumably textures are now also 8 times as large. In other words AGP 8x isn't really an "improvement" in any way, it's basically just to keep up with the larger texture requirements of the present and the future.
Nagorak is offline   Reply With Quote
Old 13-Aug-2002, 23:49   #8
OpenGL guy
Senior Member
 
Join Date: Feb 2002
Posts: 2,291
Send a message via ICQ to OpenGL guy
Default

Quote:
Originally Posted by Nagorak
Presumably video memory has been increasing because texture detail (and size) have been increasing.
I'd say video memory has been increasing because performance is getting higher so people want higher resolutions. Also, features like AA can take up more memory as well.

Another reason to use more memory is because of local vertex buffers. "Code Creatures", for example, loads a bunch (like more than 64 megs worth) of 4 meg vertex buffers.
Quote:
In other words AGP 8x isn't really an "improvement" in any way, it's basically just to keep up with the larger texture requirements of the present and the future.
You don't need faster AGP for texturing. If your textures aren't in local video memory, you are going to have performance troubles because of the huge difference in available bandwidth between AGP and local memory. The faster AGP protocols are being used more for vertex and command data. Texture data is generally loaded all at once at the start of a scene (i.e. beginning of a level in a game) so that they won't affect performance later.
OpenGL guy is offline   Reply With Quote
Old 14-Aug-2002, 00:54   #9
Doomtrooper
Senior Member
 
Join Date: Feb 2002
Location: Ontario, Canada
Posts: 3,328
Default

I've got a old Pcgamer around here somewhere where they interviewed Intel and how AGP was going to lower costs of video cards due to the the AGP bus, they specifically stated there will be no more need for 16 meg cards and in the future video cards will be shipping with 1 meg of onboard video memory

I remember laughing back then and still laughing...
Doomtrooper is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Ken Kutaragi Interview Mikage Console Technology 63 27-May-2005 20:24
What kind of game should I call Doom 3? binmaze PC Games 2 05-Aug-2004 08:34
One of Nvidia's press releases was kind of interesting to me Fox5 3D Architectures & Chips 3 18-Jan-2003 14:09
Is AGP 4x the bottleneck of Radeon 9700’s triangle count Zephyr 3D Architectures & Chips 39 02-Sep-2002 17:29


All times are GMT +1. The time now is 01:07.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.