Trying out 6950XT and MacOS

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
As you probably know, AMD recently released its latest gpu refreshes for the RX 6000 series. Having held out all this time with a 5500XT, I went ahead and gave the AMD queue a shot. To my surprise, I scored a 6950XT! With component prices going down, I also lucked out on a deal on a lightly used 5950x a few weeks ago. Guess demand really is going down? Anyway, this evening I've started the process of trying to get this card to work in my current system:
Mobo - Asrock x570 ITX/TB3
CPU - Ryzen 5950x
GPU - AMD 6950XT reference edition

So far, results have been... mixed. My first attempt was done out of curiosity more than anything, but I popped that sucker staring into my mobo and tried to boot. Of course, that did not work. One can dream, right?

As folks had discussed across various forums, the 6950XT is in essence a souped up 6900XT so I still had hopes that this wouldn't be too hard a process. I went ahead with trying to spoof the device-id to just a vanilla 6900XT, as others have needed to do with the XTXH or whatever those were called. I'll admit, not totally sure if I did it right, but hey I booted into MacOS and I'm typing this into Safari now! I hope I won't have to flash the bios to 6900XT, but I do have experience doing that kind of thing and if worst comes to worst, I'll do it. But here's what I've observed so far:
  • In 'About This Mac' I guess I was able to get 'AMD Radeon RX 6950XT' to display properly! whoopee. it shows up.
  • ... but it also says I only have 31MB of VRAM
  • Continuing into 'System Report,' VRAM (Total): reads out to 31MB AND Device ID: 0x73a5, which if I'm not mistaken is for the 6950XT, not the 6900XT.
  • Although I'm using MacOS, it's buggy and laggy as all get out. Minimize too many things at once and the poor machine will lock up and lose its lunch. Moving objects/windows around the monitor results in tremendous amounts of stuttering.
  • Google Chrome is absolutely unusable. No images are produced at all.
  • Via HDMI, video output max was 1080p. No other resolutions available, even on my 4K panel. Switching from HDMI to Display Port on my LG 4K monitor unlocked the ability to display at 4K, but no scaling. Not sure why that made a difference.
  • Wifi cuts out sometimes? Using a replacement Broadcom card. This might be a separate issue though (ah the life of a hackintosher!)
Screen Shot 2022-05-17 at 11.12.03 PM.png
Screen Shot 2022-05-17 at 11.04.54 PM.png




Here's what I did and have tried:
  • I updated to Monterey 12.4, against my better judgment. Everything was working fine before. Damn I wish I had waited, just in case it ends up being important.
  • In my config.plist I have listed device-id as 'FF730000'
  • I do believe I'm using the latest versions of whatevergreen and Lilu, if that's relevant.
  • I did use Gfxutil to add in the correct entry for DeviceProperties (I think?!?)
  • I did compile SSDT-BRG0 and enable in my config.plist, but this is where I was the least confident in my work.
  • Not sure if this needs mentioning, but it works in windows, just fine.

If you couldn't tell, I'm relatively new at this and pretty ignorant when it comes to a lot of hackintoshing work. All in all, I'm glad that I at least got this far, though, barring apple releasing updated drivers with support for these refreshes, I hope I can find a working solution to smooth things out a bit. I'll be documenting my findings and progress here. If you have any advice or tips on what I might try, I'd be happy to give them a shot and report back. Fair warning though, between work, moving, getting married, other fun personal business, I can't promise that how quickly I'll be able to make process. Still, if you have any ideas on how I might get this to work a bit better, I'm all ears! For now, a break. Been spending too much time on this for tonight!

Thank you!
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
Code:
2c:00.0 1002:73a5 /[email protected]/[email protected],1/[email protected]/[email protected]/[email protected] = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

this is your gfxutil output, there are 2 pci-brdges that we need to decipher into 4 letter XXXX YYYY and replace into the dsl file.

Code:
2c:00.0 1002:73a5 /[email protected]/[email protected],1/[email protected]/[email protected]/[email protected] = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
2c:00.1 1002:ab28 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],1 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x1)
2c:00.2 1002:73a6 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],2 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x2)
2c:00.3 1002:73a4 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],3 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x3)

Under the primary entry I've been focusing on, I do have these lines that also begin with the PCI0.GPP8. Would it be worth trying the following XXXX and YYYY combos?
XXXX = PCI1 and YYYY = AB28
XXXX = PCI1 and YYYY = 73a6
XXXX = PCI1 and YYYY = 73a4
 

taoj17v

New member
Joined
May 19, 2022
Messages
12
Code:
2c:00.0 1002:73a5 /[email protected]/[email protected],1/[email protected]/[email protected]/[email protected] = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
2c:00.1 1002:ab28 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],1 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x1)
2c:00.2 1002:73a6 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],2 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x2)
2c:00.3 1002:73a4 /[email protected]/[email protected],1/[email protected]/[email protected]/pci1002,[email protected],3 = PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x3)

Under the primary entry I've been focusing on, I do have these lines that also begin with the PCI0.GPP8. Would it be worth trying the following XXXX and YYYY combos?
XXXX = PCI1 and YYYY = AB28
XXXX = PCI1 and YYYY = 73a6
XXXX = PCI1 and YYYY = 73a4
XXXX YYYY should be something like BRG1 PEGP SL01 etc, but not dev id like 73a6. These four letters are acpi objects, not dev id. Like I said we can infer it from ioreg output or dsdt. Maybe you can post both so I can take a look for you.

For the dsdt dump I think there is a way in opencore boot screen where you select which partition to boot, you can save the unpatched dsdt by press F1 or F5 or something (you have to search). After saving that make sure it contains PCI0.GPP8 entries and post zipped aml or dsl files.
Ioreg full dump zipped can also be helpful in determining those values.

There are other people like you having the similar issue. They made 6950 XT to work. You just need to understand the laster 3 pages of the discussion to make yours work. https://www.tonymacx86.com/threads/success-radeon-rx-6800-xt-big-sur.306736/page-178 . Note that they directly inject 73bf using dsdt. I can also help you with that. But first we need to determine XXXX and YYYY.
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
XXXX YYYY should be something like BRG1 PEGP SL01 etc, but not dev id like 73a6. These four letters are acpi objects, not dev id. Like I said we can infer it from ioreg output or dsdt. Maybe you can post both so I can take a look for you.

For the dsdt dump I think there is a way in opencore boot screen where you select which partition to boot, you can save the unpatched dsdt by press F1 or F5 or something (you have to search). After saving that make sure it contains PCI0.GPP8 entries and post zipped aml or dsl files.
Ioreg full dump zipped can also be helpful in determining those values.

There are other people like you having the similar issue. They made 6950 XT to work. You just need to understand the laster 3 pages of the discussion to make yours work. https://www.tonymacx86.com/threads/success-radeon-rx-6800-xt-big-sur.306736/page-178 . Note that they directly inject 73bf using dsdt. I can also help you with that. But first we need to determine XXXX and YYYY.
Well this is super encouraging to see, glad others have made progress!

I've attached screenshots of relevant ioreg entries is that helpful enough for figuring out XXXX and YYYY? Forgive me if I sound a bit inexperienced!

Screen Shot 2022-05-22 at 12.14.35 PM.png

Screen Shot 2022-05-22 at 12.14.47 PM.png


Screen Shot 2022-05-22 at 12.14.55 PM.png
Screen Shot 2022-05-22 at 12.15.02 PM.png
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
There are other people like you having the similar issue. They made 6950 XT to work. You just need to understand the laster 3 pages of the discussion to make yours work. https://www.tonymacx86.com/threads/success-radeon-rx-6800-xt-big-sur.306736/page-178 . Note that they directly inject 73bf using dsdt. I can also help you with that. But first we need to determine XXXX and YYYY.
So far, These are the changes I have made using the method you linked to, hopefully it's on the right track?
Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)
    External (_SB_.PCI0.GPP8, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PCI0.GPP8)
    {
        Device (BRG0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Local0 = Package (0x08)
                        {
                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-1"
                            },

                            "model",
                            Buffer (0x13)
                            {
                                "AMD Radeon 6950 XT"
                            },

                            "device-id",
                            Buffer (0x04)
                            {
                                 0xBF, 0x73, 0x00, 0x00                           // .s..
                            },

                            "@0,AAPL,boot-display",
                            Buffer (Zero){}
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
        }
    }

    Name (_SB_.PCI0.GPP8._STA, Zero)  // _STA: Status
}
 

taoj17v

New member
Joined
May 19, 2022
Messages
12
can you show what's under D012 if the below does not work?

first several lines
Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.GPP8.BRGA, DeviceObj)
    External (_SB_.PCI0.GPP8.D012, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PCI0.GPP8.BRGA)
    {

last line should be
Code:
    Name (_SB_.PCI0.GPP8.D012._STA, Zero)  // _STA: Status

Also show what's the GFX0 node in ioreg after applying this.
 

taoj17v

New member
Joined
May 19, 2022
Messages
12
another snippet you can try. It's hard to fix indentation in this forum's builtin editor. but you can see what we have changed. I think this one has a better chance, since I explicitly define the two bridge deivces' name

Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)
    External (_SB_.PCI0.GPP8.D012, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PCI0.GPP8)
    {
        Device (BRGA)
        {
            Name (_ADR, Zero)  // _ADR: Address
        Device (BRG0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Local0 = Package (0x08)
                        {
                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-1"
                            },

                            "model",
                            Buffer (0x13)
                            {
                                "AMD Radeon 6950 XT"
                            },

                            "device-id",
                            Buffer (0x04)
                            {
                                 0xBF, 0x73, 0x00, 0x00                           // .s..
                            },

                            "@0,AAPL,boot-display",
                            Buffer (Zero){}
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
        }
}
    }

    Name (_SB_.PCI0.GPP8._STA, Zero)  // _STA: Status
}
 

Shaneee

The AMD Guy
Staff member
Administrator
Joined
Mar 13, 2020
Messages
1,851
Your PCI path matches mine so I'd assume it's correct. That config I uploaded has WEG disabled so the SSDT will be different as WEG will tend to rename the GPU to GFX0 in the system. I can't recall what it is without it. There's no real reason there why it wouldn't change the device ID tbh.
 

zk2004mb

New member
Joined
Jun 7, 2020
Messages
25
Found a video that might help. But it‘s in Chinese.

Basically it says 3 steps:
1. Find the GPU address
2. Change the ssdt file accordingly
3. Enable the ssdt in you plist.
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
another snippet you can try. It's hard to fix indentation in this forum's builtin editor. but you can see what we have changed. I think this one has a better chance, since I explicitly define the two bridge deivces' name
First off, thank you so much for your help so far, and to everyone who has suggested things as well! All of you are very kind. I only apologize I am not as knowledgable so I can only hope I'm performing all of your suggestions correct! I am happy to continue trying any suggestions anyone has.

I've taken your latest suggestion and applied it. Still no acceleration and device ID remains unchanged. Just to try, I also re-enabled whatevergreen in my config.plist. That also did not work. Would it be helpful to upload my current config.plist again? Maybe I have missed something somewhere? I would also be happy to upload full EFI on GitHub or something, maybe even here if it's allowed?


Screen Shot 2022-05-23 at 8.19.33 AM.pngScreen Shot 2022-05-23 at 8.19.24 AM.png
 

Shaneee

The AMD Guy
Staff member
Administrator
Joined
Mar 13, 2020
Messages
1,851
Remove any other SSDT referring to the GPU and remove the device properties for it and try with this SSDT.
 

Attachments

  • SSDT-GPU-6950XT.zip
    989 bytes · Views: 9

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
Remove any other SSDT referring to the GPU and remove the device properties for it and try with this SSDT.
Sorry to report, still no luck! Device properties are definitely removed from config.plist The new SSDT is added and enabled. Does it matter what order it appears in the config, plist?. Also tried with and without WEG

So strange, still no change in device ID and no acceleration!

Screen Shot 2022-05-23 at 7.02.42 PM.png
For good measure, here is what is in my ACPI folder. I don't think I've left anything behind that shouldn't be there?
Screen Shot 2022-05-23 at 7.03.35 PM.png
 

Middleman

Active member
Joined
Jan 29, 2021
Messages
389
Sorry to report, still no luck! Device properties are definitely removed from config.plist The new SSDT is added and enabled. Does it matter what order it appears in the config, plist?. Also tried with and without WEG

So strange, still no change in device ID and no acceleration!

View attachment 5938
For good measure, here is what is in my ACPI folder. I don't think I've left anything behind that shouldn't be there?
View attachment 5937
Have you added agdpmod=pikera to your NVRAM boot-arg?
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
In case anyone is following, finally moved into my new place and was able to get internet and my computer desk set up. Will be resuming efforts today and this weekend! Hopefully I will have some good news to report soon.
 

Middleman

Active member
Joined
Jan 29, 2021
Messages
389
In case anyone is following, finally moved into my new place and was able to get internet and my computer desk set up. Will be resuming efforts today and this weekend! Hopefully I will have some good news to report soon.
Good to hear!

I was just reading your thread now and it occurred to me I might know what issues you're having. Since the update of 12.3 there was a massive bug that was affecting all AMD cards especially the Navi 6800/6900 cards which affected and slowed down the performance. There was a fix for the 6900XT which was this:

XML:
<key>Add</key>
<dict>
    <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
    <dict>
        <key>@0,name</key>
        <string>ATY,Carswell</string>
        <key>@1,name</key>
        <string>ATY,Carswell</string>
        <key>@2,name</key>
        <string>ATY,Carswell</string>
        <key>@3,name</key>
        <string>ATY,Carswell</string>
        <key>ATY,EFIVersion</key>
        <data>AQABJw==</data>
        <key>device_type</key>
        <string>ATY,CarswellParent</string>
        <key>model</key>
        <string>AMD Radeon PRO W6900X</string>
        <key>name</key>
        <data>CgDKAAAA</data>
    </dict>
</dict>

You could add this in, hopefully it will solve the lagginess of the GPU.

As for the other settings, you could try this below. Use these settings below for your GPU and completely disable whatever current SSDT-GPU-6950 you have. Reason being is this setup is proven to work with simple spoofing to a recognised card (the 6900XT). The folks at Dortania had updated the GPU spoof method to Whatevergreen so using the no-gfx-spoof should enable it. You will also need to add npci=0x2000 agdpmod=pikera to the NVRAM boot-arg to activate the card.

Screen Shot 2022-06-10 at 11.00.16 PM.png
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
You know, I had remember reading reports of those issues from 12.3 and wondered if that might've been contributing to some of my issues. Great suggestion thanks so much I'll give it a go!
Good to hear!

I was just reading your thread now and it occurred to me I might know what issues you're having. Since the update of 12.3 there was a massive bug that was affecting all AMD cards especially the Navi 6800/6900 cards which affected and slowed down the performance. There was a fix for the 6900XT which was this:

XML:
<key>Add</key>
<dict>
    <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
    <dict>
        <key>@0,name</key>
        <string>ATY,Carswell</string>
        <key>@1,name</key>
        <string>ATY,Carswell</string>
        <key>@2,name</key>
        <string>ATY,Carswell</string>
        <key>@3,name</key>
        <string>ATY,Carswell</string>
        <key>ATY,EFIVersion</key>
        <data>AQABJw==</data>
        <key>device_type</key>
        <string>ATY,CarswellParent</string>
        <key>model</key>
        <string>AMD Radeon PRO W6900X</string>
        <key>name</key>
        <data>CgDKAAAA</data>
    </dict>
</dict>

You could add this in, hopefully it will solve the lagginess of the GPU.

As for the other settings, you could try this below. Use these settings below for your GPU and completely disable whatever current SSDT-GPU-6950 you have. Reason being is this setup is proven to work with simple spoofing to a recognised card (the 6900XT). The folks at Dortania had updated the GPU spoof method to Whatevergreen so using the no-gfx-spoof should enable it. You will also need to add npci=0x2000 agdpmod=pikera to the NVRAM boot-arg to activate the card.

View attachment 6066
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
First off, I want to give a big thank you to everyone who's commented or messaged to help. I truly appreciate all the suggestions and work that everyone has put into helping me out. With that being said, so far I have not had success properly spoofing the 6950xt to the 6900xt's device id. Perhaps I'm doing something wrong or missing something, which is definitely possible.

Maybe it shouldn't matter, but for my sanity's sake I'm going to be borrowing my in-law's machine (which I provided input for his parts purchases) to give things a try. He's got a gigabyte b550 board that we've had great success with hackintoshing together. We should be getting together this weekend to give it a try, though we'll also be doing family activities so not sure exactly when all the attempts will get done:) Stay tuned!

Again, thank you all for everyone's help so far! Will update again soon.
 

ovenlite1

New member
Joined
Jun 22, 2020
Messages
23
Wow. This attempt was made solely by setting device-id to BF730000, and I did change the model to 6950XT, as you can see below. Popped the card into my brother-in-law's machine, booted from USB, and here I am. Appears to have full acceleration. Just as on my personal machine, this hackintosh has been updated to the latest opencore version. Such an interesting turn of events. I suspect I've got something in my own personal computer's config that is preventing proper spoofing for the card. I may attempt to rebuild that config from scratch. But for now- 6950XT DOES work in MacOS with spoofing to 6900XT device-id.

I will test things out to see if anything else about the system has been affected but things seem to be running pretty smoothly!

Screen Shot 2022-06-19 at 3.27.23 PM.png
 
Top Bottom