[Mesa-dev] [PATCH] loader: add special logic to distinguish nouveau from nouveau_vieux

Emil Velikov emil.l.velikov at gmail.com
Mon Mar 17 11:02:49 PDT 2014


On 17/03/14 17:33, Ilia Mirkin wrote:
> On Mon, Mar 17, 2014 at 1:12 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> On 17/03/14 14:22, Ilia Mirkin wrote:
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> Hi Ilia
>>
>> I'm not sure if a nouveau specific quirk is a nice idea, although the
>> only other solution is to add the "quirk" in the driver_map table.
> 
> Meh, I don't see what the big deal is. That function is there to
> abstract away all the nasties of figuring out which driver to use.
> Having a little specialized logic in there doesn't seem like such a
> big deal. This has the advantage that it doesn't require us to update
> it as new chipsets come out. This is nice, since things tend to be
> supported on a per-family basis. I suppose an alternative is to list
> out all the supported chip versions one by one, but IMO that's tedious
> and unnecessary, just to keep out a couple of easy-to-read lines from
> a rarey-looked-at piece of code.
> 
And at the same time, loader_get_pci_id_for_fd returns the device id,
despite the somewhat ambugious parameter name chip_id. Which means that
things will not works as expected with your approach.

>>
>>> ---
>>>  include/pci_ids/pci_id_driver_map.h |  1 -
>>>  src/loader/loader.c                 | 25 +++++++++++++++++++++++--
>>>  2 files changed, 23 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/include/pci_ids/pci_id_driver_map.h b/include/pci_ids/pci_id_driver_map.h
>>> index db9e07f..064e8d4 100644
>>> --- a/include/pci_ids/pci_id_driver_map.h
>>> +++ b/include/pci_ids/pci_id_driver_map.h
>>> @@ -73,7 +73,6 @@ static const struct {
>>>     { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids), _LOADER_GALLIUM },
>>>     { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids), _LOADER_GALLIUM },
>>>     { 0x1002, "radeonsi", radeonsi_chip_ids, ARRAY_SIZE(radeonsi_chip_ids), _LOADER_GALLIUM},
>>> -   { 0x10de, "nouveau", NULL, -1,  _LOADER_GALLIUM  },
>> +   { 0x10de, "nouveau_vieux", NULL, -1,  _LOADER_DRI  },
>>
>> This produces slightly shorter patch diff, although I'm not sure if this
>> isn't a bigger hack than your approach.
> 
> It also has the disadvantage of not working. dri2_glx.c passes in 0 as
> the driver_types, which maps to GALLIUM | DRI, so it would still load
> nouveau.
> 
sigh, I feared that there will be a lovely case like that somewhere. So
we're back to square one it seems.

-Emil

P.S. Presently _LOADER_DRI, seems somewhat unused.

>   -ilia
> 



More information about the mesa-dev mailing list