Re: More on ATI Radeon 9200SE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 15 Dec 2003, Gene C. wrote:

>> >IMHO, this is one of those situations where you will need to
>> >depend on the community to report the info on new adapters.
>>
>> That is always appreciated of course.  I generally ask ATI
>> directly though and get a list back within a day or so.  I missed
>> a few when updating the lists last, but that is quite easy to do
>> since it requires making rather tedious updates in about 5
>> different locations, some in XFree86 source code, some in our
>> hwdata, and then again on the official pci ID database on
>> sourceforge, etc.  I'll fix that sometime, but until then people
>> can use the ChipID keyword to work around it easily enough, so
>> it's not a mission critical priority currently, but I'll
>> eventually get around to it during FC2 development, and probably
>> release an update for FC1 also.
>
>The "suprising" thing is that the 9200SE adapter was properly recognized by 
>XFree86 and works fine but was not recognized by redhat-config-xfree86 since 
>the pci info was not in hwdata.  Regardless, there is no hurry since "it 
>works."

Here is a rough explanation of how this is possible:

Each video driver contains a list of PCI IDs internally which
indicate what chips are supported.  This is used to both
determine wether or not a chip is supported, and if so, the ID is
used in various places in the driver source code to indicate a
conditionalized code path.  This allows a single unified driver
to handle all video hardware from a particular vendor (within
limits of course).  Any time a new video chip family is created,
( ie: ATI Radeon R100, R200, RV200, RV100, R300, etc.), the
driver needs to be modified to both understand the new chip
family and autodetect it, and to autodetect each individual PCI
ID for the new chip family.  If the new chip family, or any
individual chip requires anything to be programmed differently
from other chips already supported by the driver, then the driver
will require actual code additions/changes/etc. in order to
support the new chip or chip family.  The PCI ID will be used to
conditionally determine the code paths that are specific to that
ID, or the chip family.  Note that this is completely contained
within the video driver itself, and so the X server always knows
what hardware it supports via loading the driver, and calling
routines built into the driver.

The installer, and various config programs however have to use 
pcilib to determine what PCI devices are installed in a given 
system, and then look each one up in the PCI database (pcitable).  
If the PCI ID is not in the pcitable, then the configuration 
software treats it as "unknown" or "unsupported" because it has 
no idea wether or not it is supported, what driver it would need 
to use, or anything.  The tool can't load the X server drivers 
and query them because it has no idea what driver (if any) may or 
may not support any video hardware it has found.

As such, in order to support new video hardware, both the X 
server *AND* the pcitable must be updated with the new PCI IDs.  

This card's PCI ID was added to the driver, but not the pcitable, 
mainly because it is not an automated process, but a tedious 
manual human process which is subject to human error and other 
misgivings.

Take a look at the huge list of Radeon driver patches in the 
XFree86 specfile, and how they interlink with each other, and 
you'll see just how easily it is to miss a few IDs here and 
there.  ;o)

I plan on making an attempt to automate this somehow in the 
future though, so that our pcitable is always accurate to what 
the X server supplies.  I'm still trying to determine the best 
way to do this though.

Hope this helps understand the problem.

Take care,
TTYL


-- 
Mike A. Harris


_______________________________________________
xfree86-list mailing list
xfree86-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/xfree86-list
IRC: #xfree86 on irc.redhat.com

[Red Hat General]     [Red Hat Watch]     [Red Hat Development]     [Kernel Development]     [Yosemite Camping]

  Powered by Linux