[mdlug] Interesting information about Windows "7"
Aaron Kulkis
akulkis3 at hotpop.com
Mon Jan 28 14:21:48 EST 2008
Ingles, Raymond wrote:
>> From: Aaron Kulkis
>
>>> Well, actually, many games require particular hardware on the video card to
>>> run. For example, Hardware T&L, or shaders, or texture compression, or
>>> whatever.
>> But the game writer is NOT writing custom code for
>> that particular card...
>
> Well, the difference to the end-user is kind of academic.
> Either way, you need a particular set of cards to play the
> game, or you're SOL.
That's not true at all.
If it were written for a particular card, then the game
is locked to that card (like the old DOS games which
required a sound card which was either SoundBlaster
or Soundblaster compatible).
But modern windows games are written against the ActiveX
API. .. as more cards meet the minimum PERFORMANCE
specifications of the game, they too can be used to
play the game.
ActiveX is hardware neutral -- if it wasn't, then
Windows games from 3 years ago which required what
was then bleeding-edge hardware would be completely
unplayable on a new system with today's bleeding-edge
hardware.
> For Linux, the game
> "Cold War" needs a particular set of features.
^^^^^^^^^^^^^^^
And any particular "set of features" can be made
available by any number of different implementations
of hardware + GPU firmware.
> It'll play on my machine with an
> Nvidia 5700LE, but it won't play on my parents with a GF 4 MX400.
But it's NOT because your parents card isn't an Nvidia 5700LE.
It's because your parents card IS a GF 4 MX400 (which, as you
alluded to before...lacks the features needed. And so, the
programmer, in querying the graphics level for whether a
specific function will be executed by on-card software, or
off-card software, makes a judgement that there's too much
work-load being executed off-card, and to prevent the user
from having a less-than-satisfying experiences, exits the
game.
But if the querying wasn't done...the game WOULD play...it
would just play very slowly, or be rendered in a not so
impressive manner.
>
> More, differences in "shader models" end up forcing
> programmers to write separate code for Nvida and ATI
> cards in many case, though apparently that's settled
> down a bit in recent cards, from what I gather.
Primarily because while various shading methods are
available in ActiveX, the card-makers typically don't
implement all of them in hardware+firmware.
The game writer isn't writing for specific hardware--
the game writer is writing for specific on-card
capabilities...which again, is NOT the same as
writing for a specific hardware implementation
(such as the color palette begins at memory
location 0xABCDEF00)
>
>> NOBODY is doing "bare metal" programming on Windows
>> the way they did during the DOS days.
>
> Nor did anyone claim that...
>
>> But it's still done through the DirectX API, not
>> directly interfacing with the card.
>
> Actually, DirectX before version 9 did expose much of that in terms of
> "capabilities", and it was up to the programmer to tailor things to the available
> capabilities.
But any card that offers the capabilities will run the game.
There's no obligation to offer those specific capabilities
with any specific architecture, GPU, nor addresses for
memory locations and GPU registers.
> OpenGL had some core functionality that could be counted on, plus
> extensions. Not all of the core functionality was always accelerated, but when it
> wasn't there were software fallbacks.
>
>> But nobody is writing Windows games by writing code
>> that bypasses DirectX to directly load GPU registers
>> and directly address the card memory.
>
> No, but that's not the same thing as "not writing code specific to
> particular models of hardware".
Yes, it is. That's PRECISELY what defines "writing code
specific to particular models of hardware" is the precise
addresses of the operational registers and memory space
of the card, specific op-codes sent to the card, etc.
The whole idea of the VxD's and DirectX is to present
the cards as ABSTRACTED DEVICES which provide certain
services to the software writer.
With directX and other modern libraries, game writers
don't have to know diddly about how a particular card
arranges control registers, color palettes, nor how
they are exposed to the address/data busses ... but
this was REQUIRED KNOWLEDGE back before DirectX.
That's the WHOLE PURPOSE of an operating system --
to abstract common, mass-produced hardware, so that
they are roughly interchangeable, to the extent of
the capabilities of the hardware (Nobody would expect
a 360x360 dpi CMYK printer to produce output on par
with a 1440x720 CcMmYK printer. And nobody expects
a 5 ppm printer to produce output at the speed of a
20 ppm printer.)
More information about the mdlug
mailing list