Code Monkey home page Code Monkey logo

Comments (6)

corpnewt avatar corpnewt commented on September 26, 2024

The Properties section references Headkaze's Intel FB patching guide (which goes into much more detail):
image

In the next section, I go over what swapping the hex bytes looks like, as well as examples for the potential ig-platform-ids:
image

Is there a way you think that could be worded more understandably?

from hackintosh-guide.

cryo-kronos avatar cryo-kronos commented on September 26, 2024

First, I would briefly define what an "ig-platform-id" actually is (because I certainly don't know and a web search didn't tell me either). I'll guess that the "ig" stands for "integrated graphics" but that's just a guess.

Next, how do we find the ig-platform-id that we need? Is it listed on Intel's website or do we need to use a tool or app to extract it from our system? If a tool or app, can it be done in macOS or Windows?

Third, once we have the appropriate ig-platform-id, how exactly do we "hex-swap" it? I don't know exactly what hex-byte swapping is in this context or how to do it. Is there a specific formula or a online hex-swapper that can be used? How do you get "07009B3E" from "0x3E9B0007"? What math did you use to do this? In an earlier section you show us how to do a base64 conversion. I think a similar explanation for hex-byte swapping would be helpful for us less mathematically gifted non-programmer types who are still curious as how things are done.

BTW, headkaze's thread doesn't show you how to do this, either. And he links to another thread in Russian, which isn't much help, especially since Google translate shouldn't be trusted because translation isn't 100% accurate or even 90% accurate in many cases.

So, to edit the section you quoted above, I would do the following with my additions in brackets:

Properties:

This section is setup via Headkaze's Intel Framebuffer Patching Guide and applies only one actual property to begin, which is the ig-platform-id. [Definition of ig-platform-id]. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes. [How do we find the ig-platform-id we intend to use? By extracting it using this tool (insert url) or from a pre-made list that can be found here (insert url)].

If we think of our ig-plat as 0xAABBCCDD, our swapped version would look like 0xDDCCBBAA.

The two ig-platform-id's we use are as follows:

0x3E9B0007 - this is used when the iGPU is used to drive a display
07009B3E when hex-swapped
BwCbPg== when the hex-swapped version is converted to base64
0x3E920003 - this is used when the iGPU is only used for compute tasks, and doesn't drive a display
0300923E when hex-swapped
AwCSPg== when the hex-swapped version is converted to base64

[To swap the hex-bytes of an ig-platform-id, you can use this simple command in the Terminal or this online converter.]

from hackintosh-guide.

fttx avatar fttx commented on September 26, 2024

I agree on the "where do we get the ig-platform-id that we need" part

from hackintosh-guide.

corpnewt avatar corpnewt commented on September 26, 2024

[To swap the hex-bytes of an ig-platform-id, you can use this simple command in the Terminal or this online converter.]

I guess this is where I'm getting confused. I've explained the swap via the following: If we think of our ig-plat as 0xAABBCCDD, our swapped version would look like 0xDDCCBBAA. So, using that formula, if we have 0x01020304 and we want to swap it, we get 0x04030201. You don't need an online converter or anything to move the pairs of digits into a different order.

I do think you're right in explaining what the ig-platform-id's are, and where they come from. For that - I might run some info by you and see if it's clear enough to understand.


You can think of an ig-platform-id as a type of "configuration" for the number of ports, amount of memory, and etc for the iGPU. These are already stored in the framebuffer kexts that correspond to each iGPU family (AppleIntelCFLGraphicsFramebuffer.kext correpsonds to Coffee Lake [also known as CFL], for instance). To figure out which ig-platform-id corresponds to what settings, you'd need to dive into the framebuffer kext itself. The Clover devs have already done this, though, and the information is stored in the gma.c file of the Clover source. I wrote a python script that can download this file and re-format all of the found ig-platform-id's, along with their hex-swapped and base64 counterparts and descriptions so you can see which would work best for your uses.

A sample of the Coffee Lake output from my GetPlatforms script looks like so:

coffeelake ig-platform-id's:

       Hex        Hex-Swap      Base64

   0x3E000000  -  0000003E  -  AAAAPg==   //0 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3E910003  -  0300913E  -  AwCRPg==   //1 Intel UHD Graphics 630 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: 0xFFFF
   0x3E920000  -  0000923E  -  AACSPg==   //2 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3E920003  -  0300923E  -  AwCSPg==   //3 Intel UHD Graphics 630 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: 0xFFFF
   0x3E920009  -  0900923E  -  CQCSPg==   //4 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DUMMY2, BL: 0xFFFF
   0x3E9B0000  -  00009B3E  -  AACbPg==   //5 *MacBookPro15,1 - Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3E9B0006  -  06009B3E  -  BgCbPg==   //6 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 1, PortCount: 1, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1, BL: 0xFFFF
   0x3E9B0007  -  07009B3E  -  BwCbPg==   //7 *Macmini8,1 - Intel UHD Graphics 630 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3E9B0009  -  09009B3E  -  CQCbPg==   //8 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3EA50000  -  0000A53E  -  AAClPg==   //9 Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3EA50004  -  0400A53E  -  BAClPg==   //10 *MacBookPro15,2 - Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF
   0x3EA50009  -  0900A53E  -  CQClPg==   //11 Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF

From this list, you can find out whether or not it's a Mobile ig-platform-id, how many ports it has, how much stolen memory it needs, VRAM, and the connectors it has.


Thoughts?

-CorpNewt

from hackintosh-guide.

cryo-kronos avatar cryo-kronos commented on September 26, 2024

CorpNewt,

I really like explanation you added above. It clarifies things greatly. Thanks.

As for the hex-byte swap confusion, I'm so embarrassed. It's so obvious now but for some reason I didn't notice you were swapping pairs of numbers. My brain just didn't see the pattern, possibly because I had been reading the base64 conversion section immediately prior and was expecting hex-byte swapping to be more complicated that it actually was. Oh well.

Sorry for the confusion my comments regarding the hex-byte swapping caused.

from hackintosh-guide.

corpnewt avatar corpnewt commented on September 26, 2024

I'll look to add that description for the ig-plat in the near future. I think I'll also change my hex swap example to 0xAaBbCcDd and 0xDdCcBbAa as that implies the original pairs are just reordered without going from 0x12345678 to 0x87654321 and have everything reversed.

Thanks for the input!

-CorpNewt

from hackintosh-guide.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.