6/9 Video RAM question:
Let's say I need to display a shape model that was ~3 million
plates that are each 72 bytes (216MB). Do I have to have a video
card that has more than 216 MB of RAM or can the system dip into
main RAM in order to display it? As I understand it, the VRAM is
a buffer but what happens when the buffer fills? In this instance
my video card has 64 MB of RAM and the image displays fine. Is
the rest of the image resident in system RAM? Do people get video
cards with more VRAM for performance reasons (VRAM is faster and
dual-ported) or because they can display images they never could
otherwise? Compare a system with 16GB RAM and 64 MB VRAM to one
with 1 GB RAM and 2 GB VRAM.
\_ That wildly depends on how the data is presented to your card.
\_ Please elaborate.
\_ If you present the data to your card the right way, it can
store the vectors directly. If you don't, it can't.
\_ So what if it can't if I have 16 GB of main RAM? Can I
use that or not? Why would I not want to? That is,
what does storing directly buy me? Can I display my
model in either case but with a performance penalty?
Excuse my ignorance, but I am not a gamer or anime
freak and never had a graphics class. I realize you
touched a little bit below, but I've been reading
about rendering pipelines all day and there's not been
much that talks about the role of the h/w in this or
what happens when you run out of video RAM.
\_ If you do "immediate" mode then you're limited by the
bus speed to the video card. If you can cram it all
onto the card, you're theoretically maximizing the
hardware performance. -emarkp
\_ Are there any other penalties? Just the penalty
of the speed of the VRAM vs. RAM and the
offloading of the main CPU in favor of the GPU?
I don't see the bus speed as a limiting factor.
You have to load it all into VRAM over some bus
anyway, right? I realize say AGP might be
faster than PCI but I am more concerned by how
the size of VRAM impacts the problem than by
issues of throughput, which are clear-cut. If I
have 256 MB of VRAM and a 1 GB image then what
happens? Does the video card swap to main RAM?
\_ At this point, you leave generalities and it
depends on the card, and the quality of the
driver. If the card runs low on memory, it can
dump whatever it needs to render, and then pull it
back from main memory when necessary. -emarkp
Typically cards do 16 bits of floating point, but that's
moving up to 32. The rendering pipeline today is basically
transforming triangles modelspace->worldspace, lighting,
worldspace->cameraspace. This can be done in "immediate"
mode, where each triangle is provided from the program running
in the CPU to the video system (D3D, OpenGL, etc.=> video
card) or in buffered mode (historically "display lists" on
OpenGL though that included much more than just geometry)
commonly called "vertex buffer objects". If there's room on
the card, you can push a bunch of geometry into the card, then
just tweak the input values and do everything very
efficiently. If there isn't room on the card, then the video
memory is mostly 1) frame buffer (what you see) and 2) texture
memory.
http://en.wikipedia.org/wiki/Rendering_pipeline
John Carmack (Id software, etc.) believes he's solved the
megatexture problem (imagine a whole world or large
environment that can be textured down to tiny detail),
with little or no performance issues (implemented in their
upcoming game, Rage). He says his next project is to do the
same with geometry. So things may be changing in the next few
years. -emarkp |