dortania / bugtracker

Dortania Bugtracker
108 stars 7 forks source link

Apparently Lexa core RX 550s work now #264

Open dhinakg opened 2 years ago

dhinakg commented 2 years ago

Tested this with a user:

gpuz

config

sys profiler

Looking for more reports, will add if more confirmed reports. We should also figure out when exactly support was added.

cat2devnull commented 2 years ago

As discussed in #129, this is interesting... You appear to be performing an override of the device properties using OC to rename the model to 0x67FF which will make the Mac think that it is a baffin core and use the baffin video driver.

You can confirm this with the following commands;

ioreg | grep AMD | grep Graph
    | |   |   | +-o AMDRadeonX4000_AMDBaffinGraphicsAccelerator  <class AMDRadeonX4000_AMDBaffinGraphicsAccelerator, id 0x10000042a, registered, matched, active, busy 0 (74476 ms), retain 173>

sudo kextstat | grep AMDRadeonX4000
  141    0 0xffffff7f814bd000 0x3000     0x3000     com.apple.kext.AMDRadeonX4000HWServices (4.0.6) FC82F0FE-2CC3-3A8A-983E-251CB8FB6548 <113 14 13 8 6 5 3 1>
  143    0 0xffffff7f81035000 0x436000   0x436000   com.apple.kext.AMDRadeonX4000 (4.0.6) 03E18D1E-6494-354B-A03F-899C7200F708 <142 113 72 14 8 6 5 3 1>
  144    0 0xffffff7f814c5000 0x2f6000   0x2f6000   com.apple.kext.AMDRadeonX4000HWLibs (1.0) 07DFBE18-721B-31E3-BA62-425763A78B88 <14 6 5 3 1>

What does the underlying hardware identify the card as without the OC override?

mperreir commented 2 years ago

Hello, I just applied this OC rename trick on a freshly bought (used) RX 550 with lexa core. It was originally detected as Lexa and not supported (strange 9Mb memory size detected) and now works perfectly !

cat2devnull commented 2 years ago

I just applied this OC rename trick on a freshly bought (used) RX 550 with lexa core. It was originally detected as Lexa and not supported (strange 9Mb memory size detected) and now works perfectly !

I have a theory that AMD launched Lexa in 2017 but it was quickly replaced by the better Baffin chips in 2018. There may have been a period of time where they were manufacturing/supplying both SKUs to card vendors but after a while they stopped making or ran out of the older Lexa chips. It seems inefficient to maintain two production nodes unnecessarily. Since then they may have only been making Baffin cores and binning them based on the number of working SPs. Of course this is just a theory.

Can you let us know the vendor and model number of your graphics card? Also you say it was "originally detected as Lexa" by what software and how? Try running the commands I listed above to see what driver your Hackintosh is using. If you have used OC to make your Hackintosh think it is a baffin chip then it should be using the baffin driver. The baffin driver shouldn't be able to control a Lexa chip. Hence I think you actually have a RX550 with a baffin core and it was incorrectly identified as Lexa.

mperreir commented 2 years ago

The card is a Yeston rx 550 5G D5. It is mentioned in #129 as beeing baffin (this is why I bought it), but on Windows in CPU-Z it is detected as a Lexa core (with 512sp, 1183MHz ref clock and 1500MHZ memory clock, a sort of mix of baffin and lexa spec for the clock speeds, but lexa sp count...). In Mac os, system information does not detect it explicitly as Lexa, but the device-id is a lexa one. When I run the command you listed I have the same result as you, so the baffin driver is loaded. Maybe it is a baffin core card with more defective sp than usual ? or mac os baffin driver is also capable of handling lexa core cards secretly :grin: ?

mperreir commented 2 years ago

Well after digging a bit it seems that in my case at least I have a baffin rx 550 but with a "wrong" device-id. It seems that the Yeston rx 550 4G D5 exist in at least two variants :

dhinakg commented 2 years ago

What does the underlying hardware identify the card as without the OC override?

1002:699F, as seen in the GPU-Z screenshot.

It seems that the Yeston rx 550 4G D5 exist in at least two variants :

As far as I know, this is correct. The 512SP variant are identified as Lexa, and the 640SP variants are identified as Baffin. That's why the 640SP variants have always worked, while the 512SP variants only have worked recently.

To elaborate more, here is a screenshot dug up comparing the 512SP and 640SP variants:

gpuzcomparison

Notice how the 512SP variant is identified as Lexa (Polaris 12), while the 640SP variant is identified as Baffin refresh (Polaris 21). TechPowerUp confirmed this when it was released (although they got the Lexa codename wrong, Polaris 20 is Ellesmere refresh).

At the end of the day, my guess is that they added Lexa support sometime.

cat2devnull commented 2 years ago

Hmmm. Still not convinced but you could be correct. It just seems very strange that Apple would; a) Suddenly add support for a 5 year old GPU that has never been sold in any model b) When it identifies one of these GPU has been connected, refuse to load this newly added driver rendering the whole process pointless. c) Hide this new Lexa driver inside the existing Baffin driver I know Apple sometimes makes interesting decisions but this would be right up there.

I think it is far more likely that AMD are just selling Polaris 21 chips with only 512 working SPs and giving it the 699F (Lexa) designation (but with a different revision code) to still allow for product/driver differentiation without needing to run two completely different and expensive production nodes.

Just my 2c because without a bunch of random RX550 cards to test on, it's just an educated guess. But what this does indicate, is that if anyone buys a new RX550 GPU (assuming they don't get an old card that has been sitting in a warehouse for years) there is a good chance they can just use OC to override the device ID and it will work OOB with the inbuilt Baffin driver as you have done, which is fantastic!

mperreir commented 2 years ago

I don't know it it can help the discussion, but I dumped my bios to see how the board is declared. Here is what I got. image At least, even in the bios it is declared as lexa... But the bios (and the card ?) seems to be recent (05/29/20), so maybe it is still a "fake" lexa.

cat2devnull commented 2 years ago

Yeah, this is really interesting. I've found some threads from 2021 of people getting "Lexa" RX550s to work by overriding their device-ids in clover or OC. Another option I had not previously considered is maybe Apple have always supported Lexa as part of their Baffin driver but since they did not officially support Lexa had not written the code to identify the Lexa GPUs and thus won't load the driver without a manual override. It's so hard to know without testing a lot of cards and probably removing heatsinks to check chip numbers...

ExtremeXT commented 2 years ago

Hello everyone! I have an RX 550 LEXA with ID 699F but when I try to spoof it to 67FF like in the OP, only the name changes in MacOS, it still shows 14MB vRAM and, 699F Device ID and no acceleration...

EDIT: I got it to work, MacOS recognizes my GPU and monitor, and it feels much smoother in general now. But there's still no METAL HARDWARE ACCELERATION.

EDIT2: After a lot of tries, I finally managed to get full METAL HARDWARE ACCELERATION in MacOS Monterey on my LEXA RX 550. According to TechPowerUp, my Graphics Card was released in 2017. https://www.techpowerup.com/gpu-specs/msi-rx-550-aero-itx-oc.b4473 @cat2devnull

GPU-Z also says that it's a LEXA card. If requested, I can upload screenshots, my EFI folder and a tutorial.

dhinakg commented 2 years ago

Can you do so please? It would be helpful.

macpato82 commented 2 years ago

Its always worked for me using an SSDT

Screenshot 2022-06-12 at 14 03 58

Lexa.zip

DavideFioravanti commented 2 years ago

I managed to get my Lexa RX 550 working using SSDT patching (overwriting the device-id using the OpenCore configuration didn't work). The exact model is: PowerColor Red Dragon Radeon RX 550 2GB GDDR5 Low Profile (‎AXRX 550 2GBD5-HLEV2). It's the 2GB version of this card: https://www.powercolor.com/product?id=1639643037 Unfortunately I was not able to get HDMI audio working, but I wasn't interested in it.

andreszerocross commented 1 year ago

Just need device-id = 0xFF, 0x67, 0x00, 00 no-gfx-spoof = 0x01, 0x00, 0x00, 0x00

And it will be good, i have build many Lexa GPU with id 0x699F and all is working fine

moqsien commented 1 year ago

Its always worked for me using an SSDT Screenshot 2022-06-12 at 14 03 58 Lexa.zip

so, whereis your tutorial? :-)

moqsien commented 1 year ago

Its always worked for me using an SSDT Screenshot 2022-06-12 at 14 03 58 Lexa.zip

Finally, I've got it to work for my machine by specifying the acpi path and slot name of my RX550 4G Lexa. EFI

zemise commented 11 months ago

Its always worked for me using an SSDT Screenshot 2022-06-12 at 14 03 58 Lexa.zip

Finally, I've got it to work for my machine by specifying the acpi path and slot name of my RX550 4G Lexa.

EFI

this is work well for me

TahsinFaiyaz30 commented 1 month ago

Its always worked for me using an SSDT Screenshot 2022-06-12 at 14 03 58 Lexa.zip

Finally, I've got it to work for my machine by specifying the acpi path and slot name of my RX550 4G Lexa. EFI

this is work well for me

It is working in macOS Sonoma, but it says VDA Decoder Falied. any fix?