Jump to content
40 posts in this topic

Recommended Posts

@kaoskinkae

In my opinion, this SSDT has too much methods and properties but, if it works for you, go ahead.

 

In OC-Litte-Tanslated there is a much shorter SSDT, have you tried it? I have tried it and it seems to work fine.


In my personal experience, if you add the frameworks for each of the 5 dGPU connectors (I mean "@0,name", "@1,name", "@2,name", "@3,name" and "@4,name") the GPU performance usually drops.

 

Edited by miliuco
Typo
  • Like 2
6 minutes ago, miliuco said:

if you add the frameworks for each of the 5 dGPU connectors (I mean "@0,name", "@1,name", "@2,name", "@3,name" and "@4,name") the GPU performance usually drops

Moreover, this approach has no advantages over using WhateverGreen.kext.

  • Like 2
16 minutes ago, miliuco said:

@kaoskinkae

En mi opinión, este SSDT tiene demasiados métodos y propiedades pero, si te funciona, adelante.

 

En OC-Litte-Tanslated hay un SSDT mucho más corto , ¿lo has probado? Lo he probado y parece funcionar bien.


En mi experiencia personal, si agregas los marcos para cada uno de los 5 conectores dGPU (me refiero a "@0,name", "@1,name", "@2,name", "@3,name" y "@4,name") el rendimiento de la GPU generalmente disminuye.

 

Thanks to both of you but I am very interested in what is indicated about @0,name", "@1,name", "@2,name", "@3,name" and "@4,name although it is not the topic of this post but I am going to study it and try the ssdt that you indicate

@kaoskinkae

When macOS Monterey 12.3 broke the operation of Radeon 5000 and 6000 families, not in all cases but in quite a few of them judging by comments posted on the forums, it was proposed to add in DeviceProperties of config.plist some properties that set a framebuffer for each of the 4-5 ports of the GPU.


I tested this on my 2 Hacks with RX 6600 XT (the added framebuffer was Henbury) and I observed 2 things:

  • Zero RPM function was disabled (AMD graphics cards have fans stopped by default until the chip temperature exceeds 60º) -> dGPU was 10º cooler
  • GeekBench scores (Metal graphics test) were 10-15% lower.

This is what I added in config.plist:

 

            <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
            <dict>
                <key>@0,name</key>
                <string>ATY,Henbury</string>
                <key>@1,name</key>
                <string>ATY,Henbury</string>
                <key>@2,name</key>
                <string>ATY,Henbury</string>
                <key>@3,name</key>
                <string>ATY,Henbury</string>
            </dict>

 

Of course this doesn't have to be valid for all systems and/or all AMD graphics cards. Yours are Polaris and mine are Navi23. So don't take it as something infallible.


Still, as I believe that those properties are not necessary for what you are looking for and also @cankiulascmnfye remembers that Orinoco framebuffer is no longer used, it is worth trying GeekBench Metal with and without those keys to see if there are also differences in your case.

@miliuco, in my case (AMD Radeon RX 6600), adding these parameters (framebuffer name) increases Metal Score by 0.5%, which is most likely a measurement error. Even if it is objective, it has no practical value.

Zero RPM function specified by PP_PhmSoftPowerPlayTable property was disabled.

So, for me, using a named framebuffer is not just a pointless idea, it's a bad idea.

  • Like 1

I don't know if it is correct or wrong to be able to deactivate the VGA-HDMI AUDIO output of the Radeon RX560 but by reducing the SSDT-560 I have left only what is necessary with the false sound so that the HDMI audio output disappears. I don't know if I am committing and serious mistake

 

SSDT-RX560-HDAU.aml

  • Like 1

@kaoskinkae

It is impossible to reduce this SSDT any further. You have achieved the minimum size.
Does it work as you expect? Does the audio output to the monitor disappear as you wish?
I'm going to try it out of curiosity and I'll let you know if it works for me.

Not sure I'm following this conversation, so forgive me if I'm off-topic...  DeviceProperties in OC's config.plist perform property changes / overrides only for named ACPI devices (e.g., if an audio device has a PCI path but does not have an ACPI name like "HDAU" or similar, OC will not change existing DeviceProperties for the device.  New properties can be created, but existing properties cannot be changed).  After confirming this with vit9696 (see here), I created an SSDT to set Class = 0xFFFF on my old hack.  The SSDT that I created for my hack is attached and should be adaptable to other hacks.

 

Note that changing the DeviceID is not necessary.

 

EDIT: Just a clarification... when I say "named ACPI devices" I mean devices that have names in the original UNPATCHED ACPI (not, for example, the audio device named by AppleALC).  My attached SSDT was necessary to change the dGPU audio device class-code property on my old hack which has a dGPU audio device pci10de,be3 (which is NOT named in my unpatched ACPI).  See more here.

 

Also, while the use of method DTGP to change/add device properties is valid (and is what real Mac's ACPI uses), it is unnecessary.  My attached SSDT performs the property change without method DTGP.

SSDT-HDAU.aml.zip

Edited by deeveedee
  • Like 3

@deeveedee

Thanks for the info.

I see your SSDT, pending testing but I like the idea of omitting the GPU stuff and leaving only the audio stuff from the GPU.
 

 

Edited by miliuco
Typo

@deeveedee

This SSDT doesn't work, at least on my side. To make it work I have to add more stuff, like the SSDT that @cankiulascmnfye has in his GitHub repo.
This SSDT that I put below does work on my system:

 

Spoiler

 

DefinitionBlock ("", "SSDT", 2, "_AMD_", "_HDAU_", 0x00900000)
{
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

    Scope (_SB.PCI0.PEG0.PEGP)
    {
        Device (EGP1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (DTGP, 5, NotSerialized)
            {
                If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
                {
                    If ((Arg1 == One))
                    {
                        If ((Arg2 == Zero))
                        {
                            Arg4 = Buffer (One)
                                {
                                     0x03                                             // .
                                }
                            Return (One)
                        }

                        If ((Arg2 == One))
                        {
                            Return (One)
                        }
                    }
                }

                Arg4 = Buffer (One)
                    {
                         0x00                                             // .
                    }
                Return (Zero)
            }

            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }

            Device (HDAU)
            {
                Name (_ADR, One)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
                    {
                        Local0 = Package (0x0A)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 

                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                             // .
                                }, 

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

                                "subsystem-id", 
                                Buffer (0x04)
                                {
                                     0x00, 0x00, 0x00, 0x00                           // ....
                                }, 

                                "subsystem-vendor-id", 
                                Buffer (0x04)
                                {
                                     0x00, 0x00, 0x00, 0x00                           // ....
                                }
                            }
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Return (Zero)
                }
            }
        }
    }
}

 

 

What also doesn't work for me is the DeviceProperties method in config.plist.

@miliuco Our SSDTs do different things - my SSDT changes the dGPU's audio class-code to 0xFFFFFFF so that AppleALC.kext does not detect (and try to initialize) it.  It works for my Nvidia dGPU audio.  Since the dGPU audio device on my hack does not have an ACPI name (like HDAU), the SSDT was required to change the class-code (couldn't use OC DeviceProperties).  

 

It all depends on what you're trying to achieve.  Glad your SSDT worked for you.

 

EDIT: I didn't know anyone was still using DTGP.

 

EDIT2: @miliuco Just curious - does your dGPU audio device have a name (like HDAU) in your native/unpatched ACPI (not the name assigned by AppleALC.kext).  If your dGPU device is named in your unpatched ACPI, then in my SSDT, "Device (HDAU)" must be changed to your dGPU audio's ACPI device name and the "name" property must be removed from my SSDT before you use it.  If your dGPU audio device does not have a name in unpatched ACPI, then you need to modify the "name" property in my SSDT to match your dGPU audio device-id.  As I indicated in my initial post, my SSDT can be adapted and should work.

Edited by deeveedee
  • Like 1

@kaoskinkae

What I needed to disable HDMI audio. Combination of SSDT and "DeviceProperty" mentioned by @miliuco

 

RX 580

 

Spoiler

image.png.5c22dbd38fa6759485911b131c411871.png

 

image.thumb.png.17e72b5283a6bf0fe60152698bd40a45.png

 

 

RX 6600XT

 

Spoiler

image.png.7bd1b7c9245535ce6452b9b08f6a380e.png

 

image.thumb.png.5ae7448c9fb6defbce2d93146c02fe10.png

 

 

From my testings for RX 6600XT, either of nullifying "device-id" or "class-code" will disable HDMI audio, but for my RX 580, device-id must be altered. 

One thing for sure though that using "DeviceProperty" method requires ACPI device for external dGPU's HDMI audio to be present or defined in order to achieve this specific goal. This can be done by simply creating HDAU device under ACPI path of a GPU namely PEG0 or PEG1 for Polaris GPUs.

 

  

Edited by FirstTimeCustomac
  • Like 1
6 hours ago, FirstTimeCustomac said:

@kaoskinkae

Lo que necesitaba para desactivar el audio HDMI. Combinación de SSDT y "DeviceProperty" mencionada por@miliuco

 

RX 580

 

  Revelar contenidos ocultos

image.png.5c22dbd38fa6759485911b131c411871.png

 

imagen.thumb.png.17e72b5283a6bf0fe60152698bd40a45.png

 

 

RX6600XT

 

  Revelar contenidos ocultos

image.png.7bd1b7c9245535ce6452b9b08f6a380e.png

 

imagen.thumb.png.5ae7448c9fb6defbce2d93146c02fe10.png

 

 

Según mis pruebas para RX 6600XT, anular "device-id" o "class-code" deshabilitará el audio HDMI, pero para mi RX 580, se debe alterar el device-id. 

Sin embargo, una cosa es segura: el uso del método "DeviceProperty" requiere que el dispositivo ACPI para el audio HDMI de la dGPU externa esté presente o definido para lograr este objetivo específico. Esto se puede hacer simplemente creando un dispositivo HDAU en la ruta ACPI de una GPU, es decir, PEG0 o PEG1 para las GPU Polaris.

 

  

 
 
Now I understand why the combination of my SSD only with the "HDAU" section. Combined with the deviceproperties, it works, it needs to create the device to be able to be canceled in my case when a fake HDMI audio device from the RX560 is created by using a VGA-HDMI converter. that includes USB audio power connector creates said fake audio device
 
 
 
×
×
  • Create New...