I was under the impression that the whole point of building GPUs in
the first place was because it was impossible to build a software
renderer of comparable speed :P

On 15 June 2010 20:39, Bob Somers <magicbob...@gmail.com> wrote:
> Trying to make a software renderer compete with a dedicated GPU is
> kind of, uh, an exercise in futility.
>
> --Bob
>
>
>
>
>
> On Mon, Jun 14, 2010 at 11:20 PM, Katrina Payne
> <fullmetalhar...@nimhlabs.com> wrote:
>> Well, considering how crazy this idea is... that is likely all I would be
>> having with it...
>>
>> Regardless of whether or not it works.
>>
>> This is like Joker from Batman type crazy here...
>>
>> So, yeah, I will X3
>>
>> The issue is I have too much other crap on my plate right now--however, I am
>> certain there are other crazy people on this mailing list who have the time
>> for this suggestion.
>>
>> On Tuesday, June 15, 2010 12:14:42 am Bob Somers wrote:
>>> Uh, have fun with that.
>>>
>>> --Bob
>>> On Mon, Jun 14, 2010 at 8:20 PM, Katrina Payne
>>> <fullmetalhar...@nimhlabs.com> wrote:
>>> > This also adds a rather odd burden here, that allows Linux to get a better
>>> > standing for gaming.
>>> >
>>> > It is not that unknown that without mixing, Linux generally does not
>> require
>>> > anywhere near as much over head to run as windows.
>>> >
>>> > The minimum requirements to run a GUI on Linux is about 256MiB of RAM.
>> This
>>> > even includes GUIs like KDE and Gnome. Though XFCE and LXCE would be
>> better if
>>> > you really did only have 256MiB of RAM (well if you were using a DE... and
>> not
>>> > a slimmed down WM with only a few programs loaded into it)
>>> >
>>> > You can do just fine win 1GiB of RAM.
>>> >
>>> > Linux also, as an OS can run on some old Intel boards--that running an OS
>> on
>>> > would other wise be insane today. a Pentium 1 can still get (some) use
>> with
>>> > Linux.
>>> >
>>> > Not enough to really be noteworthy as a desktop PC... but, this is a lot
>> less
>>> > than the least you will get Windows 7 onto.
>>> >
>>> > So we have a nice toss up here:
>>> >
>>> > 1: Linux requires Software Rendering in place. IE: how rendering was done,
>>> > before we got silly things like TNT and Voodoo on the market.
>>> >
>>> > 2: Linux requires significantly less overhead to run, as far as OS goes.
>>> >
>>> > If we can get it so that we can show Steam running on Linux, using mostly
>>> > Software Rendering, and getting it to run as fast as the same game on
>> Windows,
>>> > on comparable hardware...
>>> >
>>> > This will definitely sell Linux as an OS...
>>> >
>>> > Which in turn will get various Graphics Card makers on board to add their
>>> > support.
>>> >
>>> > You know--I kind of want to see somebody work on that goal then. I am
>> almost
>>> > ready to dig up some old books that go over the theory of 3d programming,
>> just
>>> > to pull make a software rendering engine for this idea.
>>> >
>>> > On Monday, June 14, 2010 07:59:45 pm Darren VanBuren wrote:
>>> >> Yes, 3D drivers are definitely quite lacking on the GNU/Linux front,
>>> >> but if Valve shows support for the development of these drivers, this
>>> >> may prompt certain GPU manufacturers to step up their GNU/Linux driver
>>> >> development.
>>> >>
>>> >> Darren L. VanBuren
>>> >> =====================
>>> >> http://theoks.net/
>>> >> On Mon, Jun 14, 2010 at 18:35, Bob Somers <magicbob...@gmail.com> wrote:
>>> >> > Something to consider, though, is that the 3D driver support is years
>>> >> > behind from *ahem* a particular GPU manufacturer. I won't embarrass
>>> >> > them by saying their name, so I'll just say their initials: ATI.
>>> >> >
>>> >> > Their driver support for Linux is, frankly, pathetic at best. The
>>> >> > Fedora team is trying to solve this with their new free drivers in
>>> >> > Fedora 13 (which, I'll admit, are quite good), but it's still not up
>>> >> > to par with what you need to run a game. For example, the new free
>>> >> > drivers have very little (read: practically none) support for basic
>>> >> > vertex and fragment shaders. It will be at least another year before
>>> >> > the free drivers are up to what ATI's crappy proprietary drivers are
>>> >> > now. Even worse, right now you can get the proprietary drivers running
>>> >> > on Fedora 11 alright, sort-of on Fedora 12 with some ugly hackery, and
>>> >> > not at all on Fedora 13. Literally, ATI's Linux drivers are at least
>>> >> > 12 months behind, and the free ones are 12 months behind that.
>>> >> >
>>> >> > Unless somebody gives ATI a swift kick in the nuts the situation does
>>> >> > not look good.
>>> >> >
>>> >> > --Bob
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Mon, Jun 14, 2010 at 5:01 PM, Darren VanBuren <onekop...@gmail.com>
>>> > wrote:
>>> >> >> Spoiler Alert. It's like the ratman drawing that says "She's watching
>>> >> >> you." Canonical is she in that case.
>>> >> >>
>>> >> >> I'm personally a fan of Fedora, but if Steam on GNU/Linux is
>>> >> >> distributed as a tarball, that'd be best in the interests of Valve.
>>> >> >> Even if some people (mainly Ubuntu users) would be a bit stuck on the
>>> >> >> concept of a tarball, it'd be minimal work for Valve, and maximum
>>> >> >> cross-distribution compatibility.
>>> >> >>
>>> >> >> Darren L. VanBuren
>>> >> >> =====================
>>> >> >> http://theoks.net/
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> On Mon, Jun 14, 2010 at 16:49, Harry Jeffery
>>> >> >> <harry101jeff...@googlemail.com> wrote:
>>> >> >>> It's all down to personal opinion, as long as it does what you need
>>> >> >>> quickly and effectively then it's fine. I've yet to see the dark side
>>> >> >>> in cannonical so I honestly can't say much about their ethics.
>>> >> >>>
>>> >> >>> Either way, I <3 Linux and so should Valve.
>>> >> >>>
>>> >> >>> On 15 June 2010 00:19, Katrina Payne <fullmetalhar...@nimhlabs.com>
>>> > wrote:
>>> >> >>>> Well a few points:
>>> >> >>>>
>>> >> >>>> The commands in the Linux Commandline... and well those on any UNIX
>> or
>>> > UNIX
>>> >> >>>> Workalike have not really changed since the 1970s. You could pick up
>> a
>>> > book on
>>> >> >>>> BASH or TCSH from the 1970s, and still have most of what you should
>> do.
>>> >> >>>>
>>> >> >>>> This kind of has allowed for tools to be put around these base
>>> > functions, such
>>> >> >>>> as autocomplete, history and well--quite a few other really handy
>>> > tools, to be
>>> >> >>>> added into the Linux CLI, to make its functionality go above and
>> beyond
>>> >> >>>> anything cmd.exe is capable of.
>>> >> >>>>
>>> >> >>>> I still have yet to look into Microsoft's PowerShell though.
>>> >> >>>>
>>> >> >>>> This is why most Linux users use the CLI. It has developed into an
>>> > experience
>>> >> >>>> that is completely unlike the root canal that is cmd.exe. You can
>>> > actually go
>>> >> >>>> in, and get some functionality from it. A lot of functionality too.
>> It
>>> > also
>>> >> >>>> gives the feeling that the user has more direct control--without
>> that
>>> > Pesky
>>> >> >>>> GUI in the way (though, technically, this just has a bunch of other
>>> > items
>>> >> >>>> typically in the way, such as init.d, bash, various bash
>> extensions--
>>> > maybe
>>> >> >>>> screen... you are just trading one thing in the way, that is, a GUI,
>>> > for
>>> >> >>>> another thing, that is a CLI).
>>> >> >>>>
>>> >> >>>> Now, that said--there are plenty of Desktop Environments ('DE') that
>>> > Linux can
>>> >> >>>> make use of, that pretty much make requirement of CLI use
>> unnecessary.
>>> > That
>>> >> >>>> is, between KDE4, LXDE, XFCE, E17 and GNOME2/GTK, the average Linux
>>> > user
>>> >> >>>> nearly never has to do anything on the CLI. Unless something has
>> gone
>>> > horribly
>>> >> >>>> wrong. In which case, he should be able to get the local Linux Admin
>> to
>>> > fix it.
>>> >> >>>>
>>> >> >>>> As that technically is what he'd do if something went horribly wrong
>> on
>>> >> >>>> Windows. He'd get his local Windows Expert to fix it.
>>> >> >>>>
>>> >> >>>> The "required" use of the CLI rather than GUI to properly use Linux,
>> is
>>> > much
>>> >> >>>> like how using Vi is "required" rather than EMACS for the proper use
>> of
>>> > Linux.
>>> >> >>>>
>>> >> >>>> Also, I use Fedora, and typically find it a LOT easier to work with
>> than
>>> >> >>>> Ubuntu. This maybe, because Fedora tries not to be a bunch of
>> asshats
>>> > to the
>>> >> >>>> people upstream. The same cannot be said about Canonical, the owners
>> of
>>> >> >>>> Ubuntu. Where, from what I have seen on their policies by past
>>> > actions...
>>> >> >>>> their MAIN desire is to be asshats to the upstream.
>>> >> >>>>
>>> >> >>>> I have a long winded rant on why I do not like Ubuntu... I mostly
>> just
>>> > state
>>> >> >>>> that nobody uses Ubuntu Linux. Typically most people go over to
>> another
>>> > Linux
>>> >> >>>> Distro afterwards, generally agreeing that no matter what Linux
>> Distro
>>> > they go
>>> >> >>>> to, be it Fedora, Puppy (well, prior to being based on Ubuntu),
>> Arch,
>>> > Slack,
>>> >> >>>> Gentoo, Knoppix, CentOS, LFS, etc., is better than Ubuntu... either
>>> > that, or
>>> >> >>>> they return to Windows--only using Ubuntu as a rescue disk setup.
>>> >> >>>>
>>> >> >>>> Right, now then. Back to your regular discussion
>>> >> >>>>
>>> >> >>>> ~Katrina
>>> >> >>>>
>>> >> >>>> On Sunday, June 13, 2010 07:20:08 am Harry Jeffery wrote:
>>> >> >>>>> People like the command line because it's very fast to do what you
>>> >> >>>>> want if you know what you are doing. So far ubuntu seems to be the
>>> >> >>>>> most user friendly linux distro and what a majority of linux gamers
>>> >> >>>>> might use.
>>> >> >>>>>
>>> >> >>>>> Personally I'd just use arch-linux and optimize my system...a lot.
>> As
>>> >> >>>>> long as nVidia release decent linux drivers it's all good.
>>> >> >>>>>
>>> >> >>>>> On 13 June 2010 14:01, Adam Buckland <adamjbuckl...@gmail.com>
>> wrote:
>>> >> >>>>> > A couple of things:
>>> >> >>>>> >
>>> >> >>>>> > Elan Ruskin gave a good talk on porting to consoles at GDC08. The
>>> >> >>>>> > slides are on Valve's website. There's something in there that
>> may
>>> >> >>>>> > help you here:
>>> >> >>>>> >
>>> >> >>>>> > #ifdef __GNUC__
>>> >> >>>>> > #define MAXSI_THREADED_VARIABLE __thread
>>> >> >>>>> > #else
>>> >> >>>>> > #define MAXSI_THREADED_VARIABLE __declspec( thread )
>>> >> >>>>> > #endif
>>> >> >>>>> >
>>> >> >>>>> > You may wish to use another define for windows rather than an 
>>> >> >>>>> > else
>>> >> >>>>> > statement in case you wish to port it somewhere else in the
>> future.
>>> >> >>>>> >
>>> >> >>>>> > Also I agree, the Mac and Linux ports are incredibly similar. In
>>> > fact,
>>> >> >>>>> > on the Mac port a shell script is executed first to determine
>> whether
>>> >> >>>>> > it's running on OS X or Linux.
>>> >> >>>>> >
>>> >> >>>>> > Finally Linux could be a great consumer platform. Before it can
>>> > become
>>> >> >>>>> > this, it needs to learn that not everyone is a power user, and
>> make
>>> >> >>>>> > things simple. Learn from the Mac app bundles, and remove
>> reliance
>>> > on
>>> >> >>>>> > the command line (for example the output is shown on the update
>>> >> >>>>> > software). It scares normal users. That, and a lot of power users
>>> >> >>>>> > (like myself), don't want to have to rely on the command line for
>>> >> >>>>> > everything.
>>> >> >>>>> >
>>> >> >>>>> > On 13 June 2010 13:28, Jonas 'Sortie' Termansen
>> <hlcod...@maxsi.dk>
>>> > wrote:
>>> >> >>>>> >> I'd like to share a few experiences about porting code and
>> writing
>>> >> >>>>> >> portable code. Scroll down, if you just want my thoughts on how
>>> > portable
>>> >> >>>>> >> the Source Engine is.
>>> >> >>>>> >>
>>> >> >>>>> >> Recently I've been porting my in-development digital
>> distribution
>>> >> >>>>> >> platform to GNU/Linux for the fun of it. Naturally, most of my
>> code
>>> >> >>>>> >> didn't work right out of the box. But it is worth that several
>>> >> >>>>> >> subsystems actually worked at the first attempt, or with an edit
>> or
>>> > two.
>>> >> >>>>> >> For instance, my string system and parser classes/functions
>>> > compiled
>>> >> >>>>> >> right away.
>>> >> >>>>> >>
>>> >> >>>>> >> However, stuff like accessing the filesystem, multithreading, 
>>> >> >>>>> >> user
>>> >> >>>>> >> interfaces, networking, and so on didn't work because it relied
>> on
>>> > the
>>> >> >>>>> >> Windows API. The interesting part here is that POSIX does things
>>> >> >>>>> >> differently; but almost in the same manner as Windows. That 
>>> >> >>>>> >> means
>>> > for
>>> >> >>>>> >> each Windows API call you use, there is often one or more POSIX
>>> > calls
>>> >> >>>>> >> that does the same thing (if you add a little abstraction, that
>>> > is).
>>> >> >>>>> >>
>>> >> >>>>> >> Now, some of you heavily suggested the use of #ifdefs all around
>>> > the
>>> >> >>>>> >> code. You should not use #ifdefs each time you rely on platform
>>> > specific
>>> >> >>>>> >> behavior, but only in shared function calls or in headers. For
>>> > instance,
>>> >> >>>>> >> if you have to open a file. On Windows you can call the
>> CreateFile
>>> >> >>>>> >> function, while POSIX supports the open function. That means for
>>> > each
>>> >> >>>>> >> file opening, you need to write something like.
>>> >> >>>>> >>
>>> >> >>>>> >> #ifdef linux
>>> >> >>>>> >> int FileHandle = open(Path, Flags);
>>> >> >>>>> >> #elif defined(WIN32)
>>> >> >>>>> >> HANDLE FileName = CreateFile(...)
>>> >> >>>>> >> #endif
>>> >> >>>>> >>
>>> >> >>>>> >> Naturally, this isn't very pretty. And if this was used all over
>>> > the
>>> >> >>>>> >> Source Engine you would spend a lot of time writing #ifdefs and
>>> > checking
>>> >> >>>>> >> platform specific documentation. However, I am not saying 
>>> >> >>>>> >> #ifdefs
>>> > are a
>>> >> >>>>> >> bad idea. But instead of using them all over your code, you
>> should
>>> > move
>>> >> >>>>> >> them to a shared class or function that simply implements all
>> this
>>> > once.
>>> >> >>>>> >> In my code, I declared an abstract baseclass called
>> MaxsiFileSystem
>>> > that
>>> >> >>>>> >> implements all the common functions to access the local
>> filesystem.
>>> > So
>>> >> >>>>> >> now when I wish to open a file for reading, I would call:
>>> >> >>>>> >>
>>> >> >>>>> >> MaxsiHandle FileHandle = FileSystem()->OpenFile(Path,
>>> > MAXSI_FILE_READ |
>>> >> >>>>> >> MAXSI_FILE_SEQUENTIAL);
>>> >> >>>>> >>
>>> >> >>>>> >> This additional layer of abstraction makes it very easy to add
>>> > support
>>> >> >>>>> >> for new platforms as you just have to define a new child of the
>>> > abstract
>>> >> >>>>> >> baseclass. I have also added such a layer for my Window System.
>>> > This
>>> >> >>>>> >> means I call my own APIs in my actual code, and then it
>> redirects
>>> > it to
>>> >> >>>>> >> the Windows API or GTK+ depending on your platform.
>>> >> >>>>> >>
>>> >> >>>>> >> You might also have noticed I implemented a FileSystem()
>> function,
>>> > in
>>> >> >>>>> >> the same manner I have implemented a WindowSystem() function
>> that
>>> >> >>>>> >> returns the window system in use by the current function/class.
>>> > This
>>> >> >>>>> >> makes it easy to simply swap the window system on the fly. For
>>> > instance,
>>> >> >>>>> >> my source mod links against my distribution platform (LGPL) and
>> my
>>> > mod
>>> >> >>>>> >> then implements some of these interfaces. It could implement the
>>> >> >>>>> >> MaxsiWindowSystem class using VGUI and then my programs could be
>>> >> >>>>> >> natively drawn ingame with mininal work.
>>> >> >>>>> >>
>>> >> >>>>> >> Other porting issues includes how the VS compiler breaks a lot
>> of
>>> > the
>>> >> >>>>> >> C99 standard. To counter this, I have simply declared a lot of
>>> > macros in
>>> >> >>>>> >> my header files that replaces platform specific behavior. 
>>> >> >>>>> >> #defines
>> are
>>> >> >>>>> >> very powerful for this. For example, to declare a 
>>> >> >>>>> >> thread-specific
>>> >> >>>>> >> variable, I would use this header define:
>>> >> >>>>> >>
>>> >> >>>>> >> #ifdef __GNUC__
>>> >> >>>>> >> #define MAXSI_THREADED_VARIABLE __thread
>>> >> >>>>> >> #else
>>> >> >>>>> >> #define MAXSI_THREADED_VARIABLE __declspec( thread )
>>> >> >>>>> >> #endif
>>> >> >>>>> >>
>>> >> >>>>> >> And then use the MAXSI_THREADED_VARIABLE macro to declare each
>>> > threaded
>>> >> >>>>> >> variable. My experience is also that the GNU Compilers throw
>> much
>>> > more
>>> >> >>>>> >> errors and warnings than the Visual Studio compiler - and it is
>>> > often
>>> >> >>>>> >> right to do so. Visual Studio teaches you to write bad
>>> >> >>>>> >> standards-breaking code, even if you just compile using MinGW
>> you
>>> > will
>>> >> >>>>> >> get to fix a lot of issues that makes your code rather non-
>> portable.
>>> >> >>>>> >> (Like avoiding Microsoft-specific extensions to the C Library, 
>>> >> >>>>> >> in
>>> > some
>>> >> >>>>> >> cases.) But Microsoft did break the standard enough that you
>> might
>>> > need
>>> >> >>>>> >> to use some of the above methods for porting, just to get your
>> code
>>> >> >>>>> >> compiling using MinGW.
>>> >> >>>>> >>
>>> >> >>>>> >>
>>> >> >>>>> >> Now to return to the Source Engine. In my experience a lot of
>> stuff
>>> > in
>>> >> >>>>> >> the SDK code is already defined using interfaces, classes, and
>> such.
>>> >> >>>>> >> That means the actual porting issues have been outsourced to the
>>> > Engine.
>>> >> >>>>> >> This, in turn, means that the SDK code will be rather easy to
>> port
>>> >> >>>>> >> compared to the Engine. Fortunately, as the Source Engine
>> already
>>> > is
>>> >> >>>>> >> highly modular using interfaces, it is easy to just swap a DX
>>> > renderer
>>> >> >>>>> >> with OpenGL. As such, they already have the framework to make
>> their
>>> > code
>>> >> >>>>> >> work on new platforms - all they have to do is implement their
>>> >> >>>>> >> interfaces using the local system calls. If you start to do this
>> on
>>> > the
>>> >> >>>>> >> low-level interfaces and move upward, then soon your program
>> starts
>>> >> >>>>> >> working in all its glory.
>>> >> >>>>> >>
>>> >> >>>>> >> As for a Steam Client for GNU/Linux. It exists. I lost the link,
>>> > but it
>>> >> >>>>> >> seems that Valve uploads nightly builds of their Steam Client,
>> and
>>> > each
>>> >> >>>>> >> day it works just a bit better. Last I heard, the Steam Client
>>> > actually
>>> >> >>>>> >> logged on and the actual UI was partially drawn. I am not sure
>> why
>>> > Valve
>>> >> >>>>> >> is so silent about this - perhaps it's just experimental, or
>> they
>>> > they
>>> >> >>>>> >> to make a big deal about it, like they did with the Mac.
>> Seriously,
>>> > when
>>> >> >>>>> >> are they gonna shut up about it? Last I saw was that they made a
>>> > funny
>>> >> >>>>> >> TF2 comic about it.
>>> >> >>>>> >>
>>> >> >>>>> >>
>>> >> >>>>> >> Porting programs to Linux hasn't been very hard for me, though
>> it
>>> > is a
>>> >> >>>>> >> lot of work, if you want to do it properly. It seems that the
>>> > Source
>>> >> >>>>> >> Engine is already highly portable and GNU/Linux build doesn't
>> seem
>>> > too
>>> >> >>>>> >> difficult, as it seems from the nightly builds. There is no 
>>> >> >>>>> >> doubt
>>> > about
>>> >> >>>>> >> whether we need a client for GNU/Linux, it is just a matter of
>> time
>>> >> >>>>> >> before they announce and release it.
>>> >> >>>>
>>> >> >>>>> > Bucky
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list archives, 
>> please visit:
>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>
>>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives, please 
> visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>



-- 

Bucky

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to