• Join Us |
  • |
  • Sign in with:

The Carmack on 3D

by Steve Gibson, Mar 08, 2000 4:39am PST
Related Topics – Hardware (PC only), John Carmack

John Carmack has made an absolutely huge .plan update writing out his ideas of where the 3d hardware industry should be going. It's pretty damn tech heavy, but if you're wondering if you can make your head explode just from reading something this is a good test.

This is something I have been preaching for a couple years, but I finally got around to setting all the issues down in writing. First, the statement: Virtualized video card local memory is The Right Thing. Now, the argument (and a whole bunch of tertiary information): If you had all the texture density in the world, how much texture memory would be needed on each frame?... <snip>
You can see a few comments by Zoid and Jack in the comments section giving their reactions and a bit of a simplification if you're curious.




Comments

78 Threads | 76 Comments



  • One of the things I forgot to add in my totally useless rant before was
    that a good reason for the Permedia 3 actually to have the virtual
    paging is the 3d texture support. 3d textures obviously get
    big quick, and can take up a lot of texture memory, but often
    very little of that memory is accessed at a single time, as the card
    still renders triangles which are simply slices across that texture.

    Obviously if you have parts of a 3d texture that aren\'t going to be
    accessed, then you don\'t wanna have to have them in texture
    memory.

    And saying the Permedia 3\'s performance \"sucks ass\" isn\'t really
    correct. (Now you guys are going to label me a 3dlabs fan boy.
    I use a Voodoo3 at the moment in my dev machine, soon to be
    a GeForce) The card\'s fillrate isn\'t really top notch (even though
    the card is overclockable and keeps the fillrate near peak very
    often), but its triangle rate, and performance when doing things
    like professional rendering (especially with CSG using 3d textures)
    are very good.

    Also the triangle rate is pretty cool, especially when
    you have a multiproc system (due to good drivers with thread
    support). If I had a scene with low fillrate requirements and high
    triangle requirements, I would choose the Permedia 3 over the
    TnT2U. And if I was buying a hi-end work station card today it
    would probably be a 3dlabs one based on a dual R3 core with
    and an improved Glint Gamma.

    Still, for high fill rate applications, the nVidia cards are going to
    win, and thats where I would put my money.










  • #64, wouldn\'t specialized hardware and on-die memory for that hardware eliminate a lot of the problems you mention? There has already been talk of implementing hardware memory management for PCs as a way to improve performance... It would seem to me that this would be a special case of that large problem.

    I think the real problem with this kind of an implementation is that you will end up with hardware companies trying to make cheaper cards by reducing the amount of RAM on the card below the optimal level. This would be similiar to what Intel did with the i740 cards by only giving them 8MB of memory because of the AGP bus.

    If a hardware manufacturer put enough DDR-SDRAM in addition to a hardware accelerated texture cache controller, this would seem to be a win-win situation.




  • Virtual memory will allow game developers to write more robust, generally faster software...which will speed up games, as less of the memory management/optimization needs to be done in the game...it will be done at the driver level. Since pages will be implemented at the hardware level, it\'s \'free\' in that it won\'t affect the execution speed one bit for using it. That is, if you have all the memory you need, it won\'t be slower to use this system (it\'s just a different way of specifying a memory address). This has the benefit of allowing a developer to use texture memory the same as regular heap memory and also provides a far better system for handling \'out of memory\' situations, which will page out to system memory.





  • /me re-reads what you just said...

    Hold on! The date\'s off!

    Carmack isn\'t saying it would DECREASE performance, he\'s saying that in the case where you have enough memory for all the textures it WON\'T INCREASE performance.

    Decrease is very different to not increase.

    Basically, virtual is cool for the times when you don\'t have enough and doesn\'t do any harm when you do. Exactly the same as how multitexure making things faster when you have transparent stuff going on but not costing you performance when you don\'t.




  • (BTW, none of this is meant to be nasty or anything, just my opinions and interpretations. Hugs & kisses and all that.)

    Also,

    \"Different situation, of course. Some Windows code (unfortunately) looks for a swap file regardless of the amount of physical RAM. This is not a positive situation.\"

    I wasn\'t aware of that, but what I effectively meant was that you try running Windows with, say, a 1meg swap file and see how long you last. :) Quake3 probably won\'t even load unless you have a half gig of RAM.

    Then try using Photoshop...

    Then try writing an application which has to deal with very large files and having to deal with the complete pain in the ass that application-based virtual memory code is, and then think about what a total waste of time it is for every single programmer in the same situation to have to develop their own virtual memory code because it\'s not in the OS...


    Thinking about it some more, the scheme Carmack describes could actually INCREASE performance even for a card with enough texture memory. With current systems the textures need to be loaded on to the card at some point, let\'s just say they\'re all loaded when the level loads... But if some part of the texture is never fully visible (say a black square which is alway cut out for a doorway), or a texture is never seen close up and so only the smaller mip-levels are used, then virtual memory could actually mean you never waste time loading the unused data and your level will load faster initially (or there will be a smaller delay when the texture is first needed if the textures are not all loaded at the start).

    IMO, there\'s nothing wrong with the idea and a whole lot right about it.


  • #49, when Carmack says \"sure, you are always better off to just have enough texture memory and never swap\" he is in no way saying that virtual video memory would decrease performance.

    If you have a card with x meg of RAM and the textures all fit, you are in the optimal case and it doesn\'t matter if the card uses virtual video memory or not. (Assuming the implementation of virtual memory isn\'t stupid!)

    If x meg is not enough to hold the textures then virtual video memory will most likely give you much better performance than what we currently have.

    I see what you\'re saying, that video cards have a short life and we should just always have enough memory on them, but you can never have enough memory and someone will always push the limit, either because they\'re writing for the absolutely latest $3,000,000 card or because they were too lazy to optimise things... Or just because they\'re writing an adventure game that doesn\'t REQUIRE fast framerates but is a better experience if it looks great.

    In a perfect world we would have terrabytes of memory on our graphics cards and in our PCs and neither would have to use virtual memory techniques but that\'s completely unrealistic now.


  • #40 - #39, where did Carmack say it would decrease performance? I\'m not calling you a liar, I just don\'t rememeber him saying that at all.

    Carmack said: \"Sure, you are always better off to just have enough texture memory and never swap, and this feature wouldnÂ’t let you claim any more megapixels or megatris, but every card winds up not having enough memory at some point.\"

    Real RAM is always better than virtual.

    #40 - #39 Tell me virtual is bad after you turn off your Windows swap file and run with that for a week.

    Different situation, of course. Some Windows code (unfortunately) looks for a swap file regardless of the amount of physical RAM. This is not a positive situation.

    #43 - virtual memory is GOOD when you have to store more things in memory than you have the space for in your local memory...i think Carmacks point was that video cards don\'t or aren\'t going to have enough memory on board to run current or future games so they need to figure out a better algorithm/system for swapping to and from main memory...

    Absolutely Correct.

    My point is that it is not the best solution for hard core gamers. I\'d hate to see video card manufacturers adopt his scheme. It\'s like using AGP to shuffle system memory back and forth to the video card - good (maybe) idea in general, but bad for people who are willing to buy enough video memory to get optimum performance.

    -jb