Jump to content

Tracing back the AMD GPU wakeup issue to its origin

AMD GPU Sierra El Capitan sleep wakeup Radeon

  • Please log in to reply
202 replies to this topic

#1
Mieze

Mieze

    Giant Cat

  • Developers
  • 1,220 posts
  • Gender:Female
  • Location:Germany
  • Interests:Cats

*
POPULAR

Introduction

 

With Whatevergreen.kext we already have a workaround for the AMD GPU wakeup issue which first arose with the release of El Capitan, but as a workaround is just a second class solution for a problem I decided to trace back the reason for the issue to it's origin and this post is the result of my research. As I used a R9 270X to do my research, which is the only AMD GPU I have, my patch has only been verified to work properly with this chip but according to the information sources I used, I have no reason to believe it won't work on other AMD GPU's too. In case there is still some uncertainty left in a particular point, I will mention this explicitly.

 

 

Materials Used

  • The Linux kernel sources of the Radeon driver in order to get a better understanding of the GPU's internals: https://git.kernel.o...h=next-20171013
  • A copy of the ACPI 6.0 specs in order to find out how to dump the chip's control register space.
  • A disassembler, e.g. objdump in Terminal or the trial version of Hopper Disassembler.

 

 

What I Did

 

As it's been a well known fact that wakeup with AMD GPUs still works with El Capitan and Sierra provided you

  1. select the IGPU as primary GPU
  2. enabled CSM and use Legacy VBIOS of the AMD GPU

in BIOS setup. I was wondering what is different with UEFI VBIOS and decided to I create dumps of the GPU's control register space while using Legacy VBIOS with CSM enabled and while using UEFI VBIOS with CSM disabled in order to find out. Comparing the register space contents it became obvious where the root of the problem lies and how it can be fixed with a DSDT patch.

 

 

Technical Background

 

Using Legacy VBIOS only the primary GPU is initialized by the VBIOS, i.e. only the IGPU is initialized while the AMD GPU is left untouched. When OS X boots up the framebuffer controller kext will find the AMD GPU in vanilla state, initialize it properly and wakeup will work as expected. That's also the reason why you have to blind boot in this configuration.

 

Using UEFI VBIOS the AMD GPU will be initialized too, provided it has a display connected to one of it's ports. You'll see the BIOS splash screen and will be able to access the BIOS settings but unfortunately macOS's framebuffer controller kext will notice that the GPU has already been initialized and skips the basic setup so that the configuration made by the VBIOS will be used and this is the point where things start to go wrong because this configuration seems to be broken causing wakeup to fail.

 

First of all you have to locate the AMD GPU in your DSDT. In my case it can be found at _SB.PCI0.PEG0.PEGP but it needs to be renamed to GFX0 for AppleGraphicsDevicePolicy.kext (AGDP) to work properly. This can be done manually or using a Clover patch (this is what I did) and I assume that this problem has been already solved before. The reason why I mention it explicitly here, is that you should be aware of it and don't get confused when your AMD GPU has a different name in the DSDT than in IORegistry.

 

Second, we need to get access to the GPU's control register space. According to the Linux sources, PCI Base Address Register 2 (BAR2) is used to address the control register space on Radeon HD5000, HD6000 and HD7000 GPUs. It's a 64bit base address register but newer GPUs (BONAIRE and above, i.e. Radeon HD8000 and HD9xxx) are different as the use BAR5 instead of BAR2. Unlike BAR2, BAR5 is a 32bit base address register. On my R9 270X (PITCAIRN) BAR5 is zero so that I decided to use this as an indication to use BAR2 but I must confess that I haven't checked if it works for all supported GPUs too. In case my patch doesn't work for you, be aware that this might be a pitfall!

 

The Radeon driver's source code tells us that the first display controller engine's registers can be found starting at offset 0x6800. It also tells us a lot about the meaning of the register contents. Using Legacy VBIOS my R9 270X's display controller engine's registers are still at their default values when macOS boots:

00006800  01 00 00 00 08 80 00 0a  00 00 00 00 00 00 00 00  |................|
00006810  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006820  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006830  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006840  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006850  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006860  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006870  00 00 00 00 08 80 00 14  00 00 00 00 00 00 00 00  |................|
00006880  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006890  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000068a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000068b0  00 00 00 00 10 00 00 00  00 00 00 20 00 00 00 20  |........... ... |
000068c0  00 00 00 20 10 00 00 00  00 00 00 20 00 00 00 20  |... ....... ... |
000068d0  00 00 00 20 00 00 00 00  00 20 00 00 00 00 00 00  |... ..... ......|
000068e0  00 00 00 20 00 00 00 00  00 00 00 00 00 20 00 00  |... ......... ..|
000068f0  00 00 00 00 00 20 00 00  00 00 00 00 00 00 00 20  |..... ......... |

With UEFI VBIOS the display controller engine's registers look quite different. Using the Linux driver sources you can easily make sense out of these values and will discover that I've got a 4K display connected to my R9 270X which is configured to it's native resolution using 32 bits per pixel.

00006800  01 00 00 00 0a 80 00 0a  00 00 00 00 00 00 00 00  |................|
00006810  00 00 00 00 00 00 00 00  00 0f 00 00 f4 00 00 00  |................|
00006820  f4 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006830  00 00 00 00 00 0f 00 00  70 08 00 00 00 00 00 00  |........p.......|
00006840  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006850  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00006860  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006870  00 00 00 00 08 80 00 14  00 00 00 00 00 00 00 00  |................|
00006880  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006890  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000068a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000068b0  00 00 00 00 10 00 00 00  00 00 00 20 00 00 00 20  |........... ... |
000068c0  00 00 00 20 10 00 00 00  00 00 00 20 00 00 00 20  |... ....... ... |
000068d0  00 00 00 20 00 00 00 00  00 20 00 00 00 00 00 00  |... ..... ......|
000068e0  00 00 00 20 00 00 00 00  00 00 00 00 00 20 00 00  |... ......... ..|
000068f0  00 00 00 00 00 20 00 00  00 00 00 00 00 00 00 20  |..... ......... |

The rest was just a little bit of laborious work and trial and error, comparing register contents, understanding their meanings and see what happens when you reset these registers to their default values. If you try to play around with your GPU's control registers a little bit more, be prepared to get a garbled screen for a few seconds. After all I've managed to create a DSDT patch which fixes the wrong registers while preserving screen output during boot and, most important, solves the wakeup issue.

 

 

The Patch

 

Putting things together I created a DSDT patch to fix the incorrectly initialized registers. With this patch applied, I now have working wakeup with my R9 270X under Sierra (10.12.6) using UEFI VBIOS with CSM disabled in UEFI setup. No kext patches or additional kexts are needed anymore for sleep/wake to work properly with my R9 270X anymore. I can see the BIOS splash screen on my display and can access UEFI setup but the best of all is that there hasn't been a single wakeup issue since I applied this patch.

Device (PEGP)
{
    Name (_ADR, Zero)  // _ADR: Address
    OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
    Field (PCIB, AnyAcc, NoLock, Preserve)
    {
        Offset (0x10),
        BAR0,   32,
        BAR1,   32,
        BAR2,   64,
        BAR4,   32,
        BAR5,   32
    }
    
    Method (_INI, 0, NotSerialized)  // _INI: Initialize
    {
        If (LEqual (BAR5, Zero))
        {
            Store (BAR2, Local0)
        }
        Else
        {
            Store (BAR5, Local0)
        }
        
        OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
        Field (GREG, AnyAcc, NoLock, Preserve)
        {
            Offset (0x6800),
            GENA,   32,
            GCTL,   32,
            LTBC,   32,
            Offset (0x6810),
            PSBL,   32,
            SSBL,   32,
            PTCH,   32,
            PSBH,   32,
            SSBH,   32,
            Offset (0x6848),
            FCTL,   32,
            Offset (0x6EF8),
            MUMD,   32
        }
        
        Store (Zero, FCTL)
        Store (Zero, PSBH)
        Store (Zero, SSBH)
        Store (Zero, LTBC)
        Store (One, GENA)
        Store (Zero, MUMD)
    }
}

In case you have in-detail questions or need AML code for debugging (code to dump BARs or to dump the GPUs control register space) please let me know. I'm willing to share all my information in order support further research. Below you can find the register dumps I created attached to this post.

 

FAQ

  • Do I still have to select the IGPU as the primary display?

No. Although I haven't tried this on my own, user chh1 confirmed that this is no longer required when using the patch (please see http://www.insanelym...n/#entry2519884). Nevertheless I still recommend to select the IGPU as primary as there is absolutely no reason not to do so, in particular as the IGPU will be unusable for multimedia acceleration on Haswell based systems when it's not the primary one (IGPU's dev id is different when it's not the primary one).

 

 

Credits

  • vit9696 for developing Whatevergreen.kext and pointing me to the right direction.
  • RehabMan for developing ACPIDebug.kext
  • The Linux Radeon driver kernel developers for providing me with the background information I needed.

Attached Files


Edited by Mieze, 21 October 2017 - 06:47 PM.


#2
WarDoc

WarDoc

    The oncoming Storm

  • Members
  • PipPipPipPipPipPipPip
  • 817 posts
  • Gender:Male
  • Location:usa
  • Interests:Causing Chaos just to watch the world burn

Now all we need is a multi monitor fix for more then 2 monitors 



#3
kitmac

kitmac

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 212 posts
  • Gender:Male

awesome work.

Would this work for an RX 580 in an Egpu?



#4
Mieze

Mieze

    Giant Cat

  • Developers
  • 1,220 posts
  • Gender:Female
  • Location:Germany
  • Interests:Cats

awesome work.

Would this work for an RX 580 in an Egpu?

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze



#5
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,456 posts
  • Gender:Male
  • Location:Moscow

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze

Hello Mieze!

Good work you began!

This dump contains lspci dump and more for Polaris GPU   #35  

 

We have three issues with Radeon drivers in HackOS

1. Bad GPU registers initialisation. Hope you resolved this.

2. Bad connectors in PC Videocard compared to Apple's framebuffer. If we set Inject=NO then Apple's driver calculates connectors by itself. But not enough for multimonitors.

3. Bad AMDRadeonX4000GLDriver.bundle (not for Hack). It can't be patched by Clover because it is loaded from user space. I may propose to create better bundle with name like AMDRadeonX4001GLDriver.bundle and patch the name somewhere it used.



#6
Mieze

Mieze

    Giant Cat

  • Developers
  • 1,220 posts
  • Gender:Female
  • Location:Germany
  • Interests:Cats

This dump contains lspci dump and more for Polaris GPU   #35  

Thank you very much for the link!

 

Mieze  :cat:



#7
chh1

chh1

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts

Thank you very much. Disable IGPU,My RX580 works very well without whatevergreen.



#8
p569

p569

    InsanelyMac Protégé

  • Members
  • Pip
  • 3 posts
  • Gender:Male
  • Interests:The fastest way to get an engineer to solve a problem is to declare that the problem is unsolvab...

Great work, Mieze

Thank you for sharing your findings

The patch works perfectly on Sapphire Radeon RX580 Nitro+!!

I don't even need to disable IGPU in BIOS, disabling CSM and setting the IGPU as a primary display is enough

The 4K screen is connected to the  Radeon card and I can boot with all debug messages shown on the screen+ Apple Logo  :hysterical:

I can go to sleep - and wake up. 

:thumbsup_anim:



#9
STLVNUB

STLVNUB

    InsanelyMac Legend

  • Coders
  • 1,397 posts
  • Gender:Male

Working 100% here, with iGPU disabled, thanks



#10
Pavo

Pavo

    InsanelyMac Legend

  • Developers
  • 577 posts
  • Gender:Male
  • Location:Fort Gordon, GA

Yes, it should work with the Polaris GPUs too.

 

PS: It would be helpful if someone with a Polaris GPU could send me a dump of the GPU's PCI config space created with lspci (or RW-everything under Windows, etc.) so that I can verify the Base Address Register layout.

 

Mieze

Tell me how you do it and I can dump it for you on my MP5,1 with RX 480


Hope this helps



#11
Mieze

Mieze

    Giant Cat

  • Developers
  • 1,220 posts
  • Gender:Female
  • Location:Germany
  • Interests:Cats

Tell me how you do it and I can dump it for you on my MP5,1 with RX 480


Hope this helps

Hello Pavo,

 

thank you for your friendly offer and the link but Slice already posted a link to this dump a few days ago.

 

Mieze



#12
WarDoc

WarDoc

    The oncoming Storm

  • Members
  • PipPipPipPipPipPipPip
  • 817 posts
  • Gender:Male
  • Location:usa
  • Interests:Causing Chaos just to watch the world burn


https://drive.google...Y28?usp=sharinglets hope one of these is what you need



#13
Matthew82

Matthew82

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 312 posts
  • Gender:Male
  • Location:Poland

I make little and cosmetic modification of your patch to add correct name, apply correct framebuffer and load custom rom. 

 

For rx 580

Device (GFX1)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                    Field (PCIB, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x10), 
                        BAR0,   32, 
                        BAR1,   32, 
                        BAR2,   64, 
                        BAR4,   32, 
                        BAR5,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x1C)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-4"
                                }, 

                                "@0,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@1,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@2,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@3,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "@4,name", 
                                Buffer (0x0C)
                                {
                                    "ATY,Orinoco"
                                }, 

                                "ATY,Card#", 
                                Buffer (0x0C)
                                {
                                    "113-4E3531U"
                                }, 

                                "ATY,Copyright", 
                                Buffer (0x33)
                                {
                                    "(C) 1988-2017, AMD Technologies Inc."
                                }, 

                                "ATY,Rom#", 
                                Buffer (0x1D)
                                {
                                    "GV-RX580GAMING-8GD/F10/058AE"
                                }, 

                                "ATY,VendorID", 
                                Buffer (0x02)
                                {
                                     0x02, 0x10                                     
                                }, 

                                "ATY,DeviceID", 
                                Buffer (0x02)
                                {
                                     0xDF, 0x67                                     
                                }, 

                                "device_type", 
                                Buffer (0x12)
                                {
                                    "ATY,OrinocoParent"
                                }, 

                                "model", 
                                Buffer (0x13)
                                {
                                    "RX 580 G1 GIGABYTE"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                        If (LEqual (BAR5, Zero))
                        {
                            Store (BAR2, Local0)
                        }
                        Else
                        {
                            Store (BAR5, Local0)
                        }

                        OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
                        Field (GREG, AnyAcc, NoLock, Preserve)
                        {
                            Offset (0x6800), 
                            GENA,   32, 
                            GCTL,   32, 
                            LTBC,   32, 
                            Offset (0x6810), 
                            PSBL,   32, 
                            SSBL,   32, 
                            PTCH,   32, 
                            PSBH,   32, 
                            SSBH,   32, 
                            Offset (0x6848), 
                            FCTL,   32, 
                            Offset (0x6EF8), 
                            MUMD,   32
                        }

                        Store (Zero, FCTL)
                        Store (Zero, PSBH)
                        Store (Zero, SSBH)
                        Store (Zero, LTBC)
                        Store (One, GENA)
                        Store (Zero, MUMD)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x02)
                            {
                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

for r9 290x

Device (GFX2)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                    Field (PCIB, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x10), 
                        BAR0,   32, 
                        BAR1,   32, 
                        BAR2,   64, 
                        BAR4,   32, 
                        BAR5,   32
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x1A)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "@0,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@1,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@2,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "@3,name", 
                                Buffer (0x0B)
                                {
                                    "ATY,Baladi"
                                }, 

                                "ATY,Card#", 
                                Buffer (0x11)
                                {
                                    "113-C6710101-100"
                                }, 

                                "ATY,Copyright", 
                                Buffer (0x25)
                                {
                                    "(C) 1988-2017, AMD Technologies Inc."
                                }, 

                                "ATY,Rom#", 
                                Buffer (0x36)
                                {
                                    "C67101 HAWAII XT A0 GDDR5 4GB 64MX32 STILT MLU +37.5M"
                                }, 

                                "ATY,VendorID", 
                                Buffer (0x02)
                                {
                                     0x02, 0x10                                     
                                }, 

                                "ATY,DeviceID", 
                                Buffer (0x02)
                                {
                                     0xB0, 0x67                                     
                                }, 

                                "device_type", 
                                Buffer (0x11)
                                {
                                    "ATY,BaladiParent"
                                }, 

                                "model", 
                                Buffer (0x14)
                                {
                                    "R9 290X Asus MATRIX"
                                }, 

                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                        If (LEqual (BAR5, Zero))
                        {
                            Store (BAR2, Local0)
                        }
                        Else
                        {
                            Store (BAR5, Local0)
                        }

                        OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
                        Field (GREG, AnyAcc, NoLock, Preserve)
                        {
                            Offset (0x6800), 
                            GENA,   32, 
                            GCTL,   32, 
                            LTBC,   32, 
                            Offset (0x6810), 
                            PSBL,   32, 
                            SSBL,   32, 
                            PTCH,   32, 
                            PSBH,   32, 
                            SSBH,   32, 
                            Offset (0x6848), 
                            FCTL,   32, 
                            Offset (0x6EF8), 
                            MUMD,   32
                        }

                        Store (Zero, FCTL)
                        Store (Zero, PSBH)
                        Store (Zero, SSBH)
                        Store (Zero, LTBC)
                        Store (One, GENA)
                        Store (Zero, MUMD)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x02)
                            {
                                "hda-gfx", 
                                Buffer (0x0A)
                                {
                                    "onboard-1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

Attached File  Zrzut ekranu 2017-10-22 o 22.54.52.png   554.23KB   7 downloads

Attached File  Zrzut ekranu 2017-10-22 o 22.55.40.png   50.51KB   6 downloads Attached File  Zrzut ekranu 2017-10-22 o 22.55.58.png   45.02KB   6 downloads

Attached File  Zrzut ekranu 2017-10-22 o 23.06.05.png   60.55KB   6 downloads



#14
Mieze

Mieze

    Giant Cat

  • Developers
  • 1,220 posts
  • Gender:Female
  • Location:Germany
  • Interests:Cats

I make little and cosmetic modification of your patch to add correct name, apply correct framebuffer and load custom rom. 

 

Yes, iIt can be done this way but it's also possible to let Clover inject these properties. In the end, both methods lead to the same result. Nevertheless, thank you!

 

Mieze



#15
Matthew82

Matthew82

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 312 posts
  • Gender:Male
  • Location:Poland

Yes, iIt can be done this way but it's also possible to let Clover inject these properties. In the end, both methods lead to the same result. Nevertheless, thank you!

 

Mieze

True, but clover can not load two defriend framebuffer selected by me.  



#16
Gen4ig

Gen4ig

    InsanelyMac Protégé

  • Members
  • Pip
  • 42 posts
  • Gender:Male
  • Location:UA/PL

Thank you Mieze

My RX 580 work fine

CSM disable, RX 580 Primary

Only one more thinks - add HDAU in DSDT for HDMI Audio

All great work! :)



#17
Mork vom Ork

Mork vom Ork

    InsanelyMac Sage

  • Donators
  • 332 posts
  • Gender:Male
  • Location:Berlin/Germany

Just want to confirm, that Miezes patch from first post is working on my config as well. IGPU and CSM completely disabled in BIOS.

just have to make some "preperations" to make a tripple-monitor-setup working and some cosmetic changes as well,

as already Matthew82 has documented.

 

So now, i no longer nee LILU and WhatEverGreen kexts.

Thanx for another incredible work. Love it. Makes my Hackintosh so much easier.



#18
carlo_67

carlo_67

    AMD

  • Moderators
  • 3,140 posts
  • Gender:Male
  • Location:Roma
  • Interests:Tutto

Really great, I'm working with two GPU r9 270x and r9 270, on an AMD fx platform, with InjectAti and Framebuffer Futomaki in Clover, and with LILU and WhatEverGreen in kexts 10.12/10.13

 

 

I do not have a selection for IGPU,

but only enable CSM and legacy Vbios,\and inserted inject Ati and Fbuffer into Clover

Attached Files



#19
cyberdevs

cyberdevs

    InsanelyMacaholic

  • Donators
  • 2,501 posts
  • Gender:Male

@Mieze

 

Thanks a lot for this great solution.

 

Does this method work on Legacy BIOS as well or it only applies to UEFI? 

 

I have an old GA-EP45-DS3R and a Sapphire 7790 GPU which was working with WheteverGreen and Lilu, but ever since macOS High Sierra it's not working anymore. I get the black screen.

 

Thanks again



#20
pico joe

pico joe

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 306 posts
  • Gender:Male

for HD 7790 with High Sierra i can confirm is black screen too, but normal in 10.13.1 beta 3

 

btw Thanks for the tips @Mieze  :cat:








1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

© 2017 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy