Jump to content

Inject FB Name For AMD Radeon RX Vega 64


wyhtc
 Share

52 posts in this topic

Recommended Posts

As we know,AMD Radeon RX Vega can start up without any settings,but it doesn't  get the correct FB Name,and the graphics card name in the system information is RX xxx.

 

With WhateverGreen.kext,the graphics card name in the system information is AMD Radeon Vega 64,but the FB Name still wrong.I tried to inject it with SSDT,but at last I failed.

 

post-2105175-0-33179100-1512959940_thumb.jpg

 

In the IORegistryExplorer,the graphics card is in PCI0>PEG0>PEGP>GFX0>display@0,and the FB Name injected failed.With WhateverGreen.kext,the graphics card is in PCI0>PEG0>PEGP>pci-bridge>GFX0.

 

post-2105175-0-73135200-1512962838_thumb.jpg

 

 

I used AIDA64 to find PEGP, in the PEG0,I find a device name "LTRE",but it can't find in PEG1 and PEG2.

post-2105175-0-75306200-1512960511_thumb.pngpost-2105175-0-55151400-1512960519.pngpost-2105175-0-87124800-1512960525.png

 

So I tried to inject the FB Name with DSDT.  This is my way to Inject FB Name “Kamarang”on the Vega 64 with DSDT。Add a new device“LTRE” to replace the “pci-bridge”.I finally succeeded。

                Device (PEGP)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (LTRE)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (GFX0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                            {
                                If (LEqual (Arg2, Zero))
                                {
                                    Return (Buffer (One)
                                    {
                                         0x03                                          
                                    })
                                }

                                Return (Package (0x10)
                                {
                                    "AAPL,slot-name",
                                    Buffer (0x07)
                                    {
                                        "Slot-1"
                                    },

                                    "@0,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@1,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@2,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@3,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "device_type",
                                    Buffer (0x13)
                                    {
                                        "ATY,KamarangParent"
                                    },

                                    "model",
                                    Buffer (0x13)
                                    {
                                        "Radeon Pro Vega 64"
                                    },

                                    "hda-gfx",
                                    Buffer (0x0A)
                                    {
                                        "onboard-2"
                                    }
                                })
                            }
                        }
                    }
                }
            }

post-2105175-0-69953400-1512960712_thumb.jpg

 

With Injected FB Name,my Hackintosh can sleep,when the computer wakes up from sleep,it works.

If the system starts the black screen,please turn off the DP1.2

 

 

2017-12-11 20:34 (UTC+8)

With my friend's help, I finally succeeded inject FB name for AMD Radeon RX Vega with SSDT.

This is the sample.dsl code,you can get the correct device name from IORegistryExplorer and modify them in SSDT.aml .

DefinitionBlock ("", "SSDT", 2, "hack", "Wake", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP.LTRE, DeviceObj)    // (from opcode)

    Device (_SB.PCI0.PEG0.PEGP.LTRE)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x10)
                {
                    "AAPL,slot-name", 
                    Buffer (0x07)
                    {
                        "Slot-1"
                    }, 

                    "@0,name", 
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    }, 

                    "@1,name", 
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    }, 

                    "@2,name", 
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    }, 

                    "@3,name", 
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    }, 

                    "device_type", 
                    Buffer (0x13)
                    {
                        "ATY,KamarangParent"
                    }, 

                    "model", 
                    Buffer (0x13)
                    {
                        "Radeon Pro Vega 56"
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x04)
                {
                    "layout-id", 
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                         
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }
    }
}


post-2105175-0-18267400-1512996144_thumb.png

 

 

DSDT.zip     SSDT-Inject FB Name For Vega 56 or 64.zip

  • Like 7
Link to comment
Share on other sites

As we know,AMD Radeon RX Vega can start up without any settings,but it doesn't  get the correct FB Name,and the graphics card name in the system information is RX xxx.

 

With WhateverGreen.kext,the graphics card name in the system information is AMD Radeon Vega 64,but the FB Name still wrong.I tried to inject it with SSDT,but at last I failed.

 

attachicon.gifQQ图片20171211101845.jpg

 

In the IORegistryExplorer,the graphics card is in PCI0>PEG0>PEGP>GFX0>display@0,and the FB Name injected failed.With WhateverGreen.kext,the graphics card is in PCI0>PEG0>PEGP>pci-bridge>GFX0.

 

attachicon.gifQQ图片201712111018392.jpg

 

 

I used AIDA64 to find PEGP, in the PEG0,I find a device name "LTRE",but it can't find in PEG1 and PEG2.

attachicon.gifQQ图片20171211101751.pngattachicon.gifQQ图片20171211101758.pngattachicon.gifQQ图片20171211101804.png

 

So I tried to inject the FB Name with DSDT.  This is my way to Inject FB Name “Kamarang”on the Vega 64 with DSDT。Add a new device“LTRE” to replace the “pci-bridge”.I finally succeeded。

                Device (PEGP)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (LTRE)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (GFX0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                            {
                                If (LEqual (Arg2, Zero))
                                {
                                    Return (Buffer (One)
                                    {
                                         0x03                                          
                                    })
                                }

                                Return (Package (0x10)
                                {
                                    "AAPL,slot-name",
                                    Buffer (0x07)
                                    {
                                        "Slot-1"
                                    },

                                    "@0,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@1,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@2,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "@3,name",
                                    Buffer (0x0D)
                                    {
                                        "ATY,Kamarang"
                                    },

                                    "device_type",
                                    Buffer (0x13)
                                    {
                                        "ATY,KamarangParent"
                                    },

                                    "model",
                                    Buffer (0x13)
                                    {
                                        "Radeon Pro Vega 64"
                                    },

                                    "hda-gfx",
                                    Buffer (0x0A)
                                    {
                                        "onboard-2"
                                    }
                                })
                            }
                        }
                    }
                }
            }

attachicon.gif501152BB-DC86-4298-8F33-064691AF5502.jpg

 

With Injected FB Name,my Hackintosh can sleep,when the computer wakes up from sleep,it works.

If the system starts the black screen,please turn off the DP1.2

 

attachicon.gifDSDT.zip

 

Nice Job!

Link to comment
Share on other sites

Thanks! Have you succeeded?

No, unfortunately my Ryzen dsdt has different terminology for these. Instead of PEGO or PEGP I have BGG8 attached to my PCIO@0 nomenclature. If I add dsdt (PCIO.PEGO) it renames it to IOMM? I’ve been testing but all the guides are for Intel systems.

 

I tried to open your original dsdt but it won’t open using MacaISL editor. I will try again later with your latest links.

 

Update:    It works on Ryzen as well.

 

post-1753549-0-04148500-1513125824_thumb.png

  • Like 1
Link to comment
Share on other sites

No, unfortunately my Ryzen dsdt has different terminology for these. Instead of PEGO or PEGP I have BGG8 attached to my PCIO@0 nomenclature. If I add dsdt (PCIO.PEGO) it renames it to IOMM? I’ve been testing but all the guides are for Intel systems.

 

I tried to open your original dsdt but it won’t open using MacaISL editor. I will try again later with your latest links.

 

Update:    It works on Ryzen as well.

 

attachicon.gifScreen Shot 2017-12-12 at 4.37.19 PM.png

Nice Job!And the MacaISL version I used is RM-1.31(252.3)and edited with ACPI 6.1

 

post-2105175-0-40263600-1513130898_thumb.png

 

I have done it successfully with SSDT and tested the FB Name "Kamarang" and "Iriri", they all work properly.  Would you like to try this job?

 

These are my SSDT files and the MacaISL editor what I use:

SSDT-RX Vega FB.zip

 

MaciASL RM-1.31.zip

  • Like 1
Link to comment
Share on other sites

Nice Job!And the MacaISL version I used is RM-1.31(252.3)and edited with ACPI 6.1

 

attachicon.gifQQ截图20171213100219.png

 

I have done it successfully with SSDT and tested the FB Name "Kamarang" and "Iriri", they all work properly.  Would you like to try this job?

 

These are my SSDT files and the MacaISL editor what I use:

attachicon.gifSSDT-RX Vega FB.zip

 

attachicon.gifMaciASL RM-1.31.zip

hey

use this for device_type and name ^_^

}, 

                                        "device_type", 
                                        Buffer (0x10)
                                        {
                                            "ATY,IririParent"
                                        }, 

                                        "name", 
                                        Buffer (0x10)
                                        {
                                            "ATY,IririParent"
                                        },
Link to comment
Share on other sites

What is the deference between Iriri and Kamarang? Both have a same HDMI, 3 x DP. What is a property framebuffer for Vega?

My friends had tested and said to me :Karamang can play H264 video but not H265 with hardware-accelerated graphics, Iriri can play H265 but not H264 with hardware-accelerated graphics. There are no other differences between them.

Link to comment
Share on other sites

My friends had tested and said to me :Karamang can play H264 video but not H265 with hardware-accelerated graphics, Iriri can play H265 but not H264 with hardware-accelerated graphics. There are no other differences between them.

I use both Karamang H264 4k and H265 4k for hardware decoding
Player: IINA
Link to comment
Share on other sites

 

I use both Karamang H264 4k and H265 4k for hardware decoding
Player: IINA

 

Nice job!Thank you for feedback,and I will talk to my friend about your test result.

Link to comment
Share on other sites

  • 2 weeks later...

Not working for me, but might be due to my setup (Supermicro and dual Xeons), I tried to change the SSDT by myself but I can't get it to work properly or to display properly the name of the card. Will upload later today a IOreg maybe some of you guys will be able to help me.

 

Thanks for the thread and the findings !

 

EDIT 1: As promised here is attached the IOreg for you guys to check... hope you will find what is going on. Apparently the path to the GFXO for me seems to be _SB / PCI0@0 / HPET / LTRE. Tried to modify that on the SSDT but I keep on getting compiler errors.

MacPro.ioreg.zip

Link to comment
Share on other sites

Not working for me, but might be due to my setup (Supermicro and dual Xeons), I tried to change the SSDT by myself but I can't get it to work properly or to display properly the name of the card. Will upload later today a IOreg maybe some of you guys will be able to help me.

 

Thanks for the thread and the findings !

 

EDIT 1: As promised here is attached the IOreg for you guys to check... hope you will find what is going on. Apparently the path to the GFXO for me seems to be _SB / PCI0@0 / HPET / LTRE. Tried to modify that on the SSDT but I keep on getting compiler errors.

 

The path for your GFX0 is _SB.NPE7.(something).LTRE . You could check this in windows with AIDA64 Engineer to find name of device in NPE7.

Link to comment
Share on other sites

The path for your GFX0 is _SB.NPE7.(something).LTRE . You could check this in windows with AIDA64 Engineer to find name of device in NPE7.

 

For my Ryzen systewm I had to use the imac 18.2 to get the GFX0 to work, with MP 6.1 it always listed as IOMM.   

Link to comment
Share on other sites

The path for your GFX0 is _SB.NPE7.(something).LTRE . You could check this in windows with AIDA64 Engineer to find name of device in NPE7.

 

Problem is I don't have a windows partition on this machine, Linux possibly ? So I can make a USB stick and boot from it and find out... but I have no clue what tool to use on Linux, any idea ?

Link to comment
Share on other sites

Can you elaborate a little bit more ? What is the relationship between renaming to GFX1 with naming properly the card in the SSDT method ? 

not rename, device don't exist, u need create one with correct Name (_ADR

Link to comment
Share on other sites

 Share

×
×
  • Create New...