Jump to content

[GUIDE] 1st Generation Intel HD Graphics QE/CI


GhostRaider
 Share

2,093 posts in this topic

Recommended Posts

Actually, I am not using a DSDT. This is my second attempt at installing OS X on hardware that isn't by Apple. I've found some kexts that fix most of the issues it has, like wifi, etc, and I've read in a few places that a DSDT was required. Do you think I need one, and if so, would you point me in the right direction?

 

I've read that in a few places. That why I was looking into EDID. Do you know how to check if OS X is picking up EDID correctly? [:

 

Do you absolutely need natit. Some users don't need it double check to see, because natit does some tricks of its own.

Also try editing natit's plist and disable dual link and such,also be aware of what extra video options your boot-loader adds.

 

Example: if i don't disable all boot-loader args to do with video i get messed up screen.

 

Lastly try different patch combinations.. like single link width 2, single link width 3 and so on.........Dual link width 1,Dual link width 3.

May sound stupid but i've done in for testing sake and results vary.

  • Like 1
Link to comment
Share on other sites

Do you absolutely need natit. Some users don't need it double check to see, because natit does some tricks of its own.

Also try editing natit's plist and disable dual link and such,also be aware of what extra video options your boot-loader adds.

 

Example: if i don't disable all boot-loader args to do with video i get messed up screen.

 

Lastly try different patch combinations.. like single link width 2, single link width 3 and so on.........Dual link width 1,Dual link width 3.

May sound stupid but i've done in for testing sake and results vary.

 

Okay, so I tried to boot without natit and it was a no go. I could't even get past the apple logo. When I removed the FB, it wouldn't recognize my graphics card, so yes I do need it. I also tried removing the dual link options and I could not boot, once again.

 

The only bootloader options that messed with the video I had were the, GraphicsEnabler=Yes and the GraphicsMode=1366x768x32. I tried disabling both, but it was also a no go.

 

Lastly, I tried the different patch combinations. When I tried the single link width 2, my screen was a little more legible. So I went up to single link width 3, and it was a little more legible. Then I finally tried single link width 4, and bam! My screen is perfectly legible and detects different screen sizes now!!

 

Yay!! Finally! Now its time to try to get QECI to work!

 

Thank you very much 2bad0! I really appreciate it!! [:

 

I am sharing the patched FB that worked for me just incase anyone else is having my same difficulties.

I just used these options when patching it. (-w 4 -p LVDS)

AppleIntelHDGraphicsFB.zip

 

 

Okay, so I installed the two missing kexts, AppleIntelHDGraphics.kext and AppleIntelHDGraphicsGA.plugin from the QECI zip on the first post, and it worked flawlessly!

Edited by miguelme777
Link to comment
Share on other sites

according to Wiki, the our fifth gen intel gpu has more execution units, its clock is a bit higher (400MHz->500-766MHz), also it support more DVMT, however the last one depends on the OS (I guess).

 

Anyway, it should work at least as fast as previous generation intel gpu... tell me if I'm wrong)

So, we need to find out how to run our gpu at full power :help:

 

 

Hi, anyone has solved the performance of graphic card (0046:8086)?

In games and some applications the performance is poor in my laptop (very laggy).

 

Note: I'm using Natit to inject my graphic card.

 

Regards.

Link to comment
Share on other sites

I also have very poor performance in 3D applications !!

 

Using :

- Native speedstep with dsdt & patched AICPM

- Latest FakeSMC emulating latest SMC v1.7

- AppleIntelHDGraphicsFB with PowerStates=1 (also tried 0)

- No use of Natit

 

On Win7, i can play H.A.W.X for example, so i know what this card is capable of !!

Any suggestion please ?

Link to comment
Share on other sites

I also have very poor performance in 3D applications !!

 

Using :

- Native speedstep with dsdt & patched AICPM

- Latest FakeSMC emulating latest SMC v1.7

- AppleIntelHDGraphicsFB with PowerStates=1 (also tried 0)

- No use of Natit

 

On Win7, i can play H.A.W.X for example, so i know what this card is capable of !!

Any suggestion please ?

Could you give me your device-id from the Intel HD with System Info.

Maybe setting AGPM.kext will solve the problem.

Link to comment
Share on other sites

Editing the AGPM plist might solve the performance issues for Intel HD Graphics IGPU. However I'm not sure if you can get a kernel panic from editing it. I'm also not sure if OS X can boot without it either unless someone can confirm you can boot OS X without AGPM kext.

 

You don't have to add vendor or device id. It's already there:

 

post-620531-0-71394900-1370111916_thumb.png

 

I also did some tests with OpenGL Extensions Viewer and these are my results. Tried with Battery and AC connected. This was a native test, no edits in AGPM kext. Tests were run at full screen (1366x768).

 

Cube (Battery):

post-620531-0-60052000-1370111990_thumb.png

 

Cube (AC):

post-620531-0-67315900-1370112016_thumb.png

 

MultCube (Battery):

post-620531-0-73604000-1370112090_thumb.png

 

MultCube (AC):

post-620531-0-61776600-1370112113_thumb.png

 

Iron Fist Head (Battery):

post-620531-0-37199200-1370112140_thumb.png

 

Mult Iron Fist Head (AC):

post-620531-0-86058000-1370112177_thumb.png

 

From the results, the Multiple Iron Fist Head killed the Intel HD Graphics. I mean it is an integrated graphics chip so performance will never be good as dedicated graphics cards. There was not much difference whether running in Battery or connected though AC. Also, keep in mind that OS X uses OpenGL in games, not DirectX. Again performances vary.

Link to comment
Share on other sites

Okay I started investigating the AppleGraphicsPowerManagement.kext (AGPM 10.8.3) and the ordering of the power states don't make sense.

 

Inside the AGPM plist, there are these values for MacBook Pro (6,2). Well I chose 6,2 because that is the SMBIOS i'm using. MacBook Pro (6,1) also has the same values.

 

   <key>Vendor8086Device0046</key>
 <dict>
  <key>BoostPState</key>
  <array>
   <integer>0</integer>
   <integer>1</integer>
   <integer>2</integer>
   <integer>3</integer>
  </array>
  <key>BoostTime</key>
  <array>
   <integer>3</integer>
   <integer>3</integer>
   <integer>3</integer>
   <integer>3</integer>
  </array>
  <key>Heuristic</key>
  <dict>
   <key>BusyDownThresholdPercent</key>
   <integer>65</integer>
   <key>BusyUpThresholdPercent</key>
   <integer>80</integer>
   <key>DiagnosticModeDefault</key>
   <integer>0</integer>
   <key>EvaluateDownInterval</key>
   <integer>350000</integer>
   <key>EvaluateUpInterval</key>
   <integer>66000</integer>
   <key>ID</key>
   <integer>2</integer>
   <key>SensorOption</key>
   <integer>1</integer>
  </dict>
  <key>HeuristicOld</key>
  <dict>
   <key>ID</key>
   <integer>1</integer>
   <key>IdleInterval</key>
   <integer>100</integer>
   <key>SensorOption</key>
   <integer>1</integer>
   <key>Threshold_High</key>
   <array>
    <integer>50</integer>
    <integer>75</integer>
    <integer>96</integer>
    <integer>100</integer>
   </array>
   <key>Threshold_High_v</key>
   <array>
    <integer>70</integer>
    <integer>85</integer>
    <integer>94</integer>
    <integer>100</integer>
   </array>
   <key>Threshold_Low</key>
   <array>
    <integer>0</integer>
    <integer>40</integer>
    <integer>55</integer>
    <integer>92</integer>
   </array>
   <key>Threshold_Low_v</key>
   <array>
    <integer>0</integer>
    <integer>50</integer>
    <integer>60</integer>
    <integer>92</integer>
   </array>
  </dict>
  <key>control-id</key>
  <integer>16</integer>
  <key>max-power-state</key>
  <integer>15</integer>
  <key>min-power-state</key>
  <integer>0</integer>
 </dict>
   </dict>

 

This is the important part we are interested in:

 

   <key>Threshold_High</key>
   <array>
    <integer>50</integer>
    <integer>75</integer>
    <integer>96</integer>
    <integer>100</integer>
   </array>
   <key>Threshold_High_v</key>
   <array>
    <integer>70</integer>
    <integer>85</integer>
    <integer>94</integer>
    <integer>100</integer>
   </array>
   <key>Threshold_Low</key>
   <array>
    <integer>0</integer>
    <integer>40</integer>
    <integer>55</integer>
    <integer>92</integer>
   </array>
   <key>Threshold_Low_v</key>
   <array>
    <integer>0</integer>
    <integer>50</integer>
    <integer>60</integer>
    <integer>92</integer>
   </array>

 

Let me explain. We have 4 power states for the Intel HD Graphics IGPU 0, 1, 2 , 3.

 

0 = Max Performance

1 = Medium Performance

2 = Low Performance

3 = Max Power Savings

 

Threshold Low and Threshold High are in idle percentages. The higher the idle percentage, the less performance. The lower the idle percentage, the higher the performance. Maybe this will make sense or not:

 

 

Threshold Low Threshold High

 

0 0% 50%

 

1 40% 75%

 

2 55% 96%

 

3 92% 100%

 

For example, if the Intel HD Graphics has its idle percentage within 0%-50%, Max performance will be activated. But the percentages overlap, and I find that rather odd. Other InsanelyMac users who have dedicated graphics cards configure their AGPM so that percentages do not overlap. Here is the problem.

 

If the Intel HD Graphics is 40%-75% idle, then Medium Performance is activated. However Max performance is from 0%-50%. They overlap. Maybe this is why there are performance issues?

 

Then from 55%-96% idle, low performance is activated and from 92%-100% Max power savings is activated. Again they both overlap.

 

However I don't know what Threshold_v Low and Threshold_v High are. Not sure what the "v" stands for.

 

 

Threshold Low_v Threshold High_v

 

0 0% 70%

 

1 50% 85%

 

2 60% 94%

 

3 92% 100%

 

All the information is here to edit the idle values. In theory, if we set level 3 to Threshold Low 99% - Threshold High 100%, then whenever the IGPU is idle at that percentage, max power savings is used. If we set level 2 Threshold Low 97% - Theshold High 98%, then low performance is used. Then if we set level 1 to Threshold Low 70% - Threshold High 96%, medium performance is used. Finally if we set level 0 to Threshold Low 0% - Threshold High 69%, max performance is used.

 

I'm not sure about Threshold Low_v or Threshold High_v. Anybody willing to try it out?

Link to comment
Share on other sites

@GhostRaider:

You should try with a clean base. The others fields are properly not needed.

<key>Vendor8086Device0046</key>
<dict>
<key>BoostPState</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
<key>BoostTime</key>
<array>
<integer>3</integer>
<integer>3</integer>
<integer>3</integer>
<integer>3</integer>
</array>
<key>Heuristic</key>
<dict>
<key>ID</key>
<integer>0</integer>
<key>IdleInterval</key>
<integer>100</integer>
<key>SensorOption</key>
<integer>1</integer>
<key>TargetCount</key>
<integer>1</integer>
<key>Threshold_High</key>
<array>
<integer>50</integer>
<integer>70</integer>
<integer>87</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>40</integer>
<integer>60</integer>
<integer>92</integer>
</array>
</dict>
<key>LogControl</key>
<integer>1</integer>
<key>control-id</key>
<integer>17</integer>
</dict>

 

Are you really sure your Intel HD has 4 P-states? I have already edited my GeForce and got GPUPM working.

I also tried adding other listed options, but this worked for me. The more I added, the more AGPM.kext refuses to do his job.

 

EDIT:

To answer your question (at least from what I understand), by editing AGPM you may choose your own PM-values.

Threshold_High controls when the GPU should be clocking up. Threshold_Low controls the GPU downclocking.

 

Threshold_High

<integer>50</integer> // GPU-usage higher than 50%, max power usage

<integer>70</integer> // GPU-usage higher than 30%, clock up

<integer>87</integer> // GPU-usage higher than 13%, clock up

<integer>100</integer> // starting point, less than 13% GPU usage

 

Threshold_Low

<integer>0</integer> // GPU-usage higher than 60%, max power usage

<integer>40</integer> // GPU-usage lower than 60%, clock down

<integer>60</integer> // GPU-usage lower than 40%, clock down

<integer>92</integer> // GPU-usage lower than 8%, clock down

 

As you can see, these two are controlling the GPU. To be honest I don't know if they apply to the Intel HD as well. Be sure to have a GPU-monitor. (Does HWSensors montering Intel HD GPU?)

Link to comment
Share on other sites

 

Are you really sure your Intel HD has 4 P-states? I have already edited my GeForce and got GPUPM working.

I also tried adding other listed options, but this worked for me. The more I added, the more AGPM.kext refuses to do his job.

 

EDIT:

To answer your question (at least from what I understand), by editing AGPM you may choose your own PM-values.

Threshold_High controls when the GPU should be clocking up. Threshold_Low controls the GPU downclocking.

 

Threshold_High

<integer>50</integer> // GPU-usage higher than 50%, max power usage

<integer>70</integer> // GPU-usage higher than 30%, clock up

<integer>87</integer> // GPU-usage higher than 13%, clock up

<integer>100</integer> // starting point, less than 13% GPU usage

 

Threshold_Low

<integer>0</integer> // GPU-usage higher than 60%, max power usage

<integer>40</integer> // GPU-usage lower than 60%, clock down

<integer>60</integer> // GPU-usage lower than 40%, clock down

<integer>92</integer> // GPU-usage lower than 8%, clock down

 

As you can see, these two are controlling the GPU. To be honest I don't know if they apply to the Intel HD as well. Be sure to have a GPU-monitor. (Does HWSensors montering Intel HD GPU?)

 

This is interesting my friend :)

 

I mean the reason I said it had 4 power states was because the AGPM plist already had 4 states already defined. Now I'm not sure it that is true. I read your post for your GeForce 4XXXX and luckly you had Windows software to find out the state clockings. Is there any software that you know of that can read the clockings of an Intel IGPU on Windows?

 

So the threshold high and threshold low are independent from each other? I read oldnapalm's post at olarila.com and his explanation was a bit different. That's how I got informed of this AGPM problem. Your explanation is different but your getting great results with your NVIDIA GPU.

 

Threshold_High

<integer>50</integer> // GPU-usage higher than 50%, max power usage

<integer>70</integer> // GPU-usage higher than 30%, clock up

<integer>87</integer> // GPU-usage higher than 13%, clock up

<integer>100</integer> // starting point, less than 13% GPU usage

 

Threshold_Low

<integer>0</integer> // GPU-usage higher than 60%, max power usage

<integer>40</integer> // GPU-usage lower than 60%, clock down

<integer>60</integer> // GPU-usage lower than 40%, clock down

<integer>92</integer> // GPU-usage lower than 8%, clock down

 

The threshold high makes sense but the threshold low makes me scratch my head but they don't conflict with each other? As for monitoring the GPU with HWInfo, I have not been able to do make it work.

Link to comment
Share on other sites

I mean the reason I said it had 4 power states was because the AGPM plist already had 4 states already defined. Now I'm not sure it that is true. I read your post for your GeForce 4XXXX and luckly you had Windows software to find out the state clockings. Is there any software that you know of that can read the clockings of an Intel IGPU on Windows?

- I was also curious what the frequencies where for my Intel HD GPU (Intel 520M CPU). Because I only have Linux installed on my laptop, I searched for a command to find out:

$gmabooster 
GMABooster should be run as root to function properly.
Do you wish to continue anyway? (y/n): y

**************************************************************************
GMABooster for Linux (Version 0.9c)            Production Date: 06/25/2009
Copyright (C)2009 Vladimir Plenskiy              http://www.gmabooster.com
**************************************************************************

Hit '4' followed by 'Enter' to set Intel(R) GMA 950 core clock to 400 MHz
Hit '3' followed by 'Enter' to set Intel(R) GMA 950 core clock to 250 MHz
Hit '2' followed by 'Enter' to set Intel(R) GMA 950 core clock to 200 MHz
Hit '1' followed by 'Enter' to set Intel(R) GMA 950 core clock to 166 MHz

Hit '0' followed by 'Enter' to detect current GMA 950 core clock and exit

Hit any different digit or letter followed by 'Enter' to exit immediate

 

I don't know if this right, but it looks like their are 4 P-states.

 

So the threshold high and threshold low are independent from each other? I read oldnapalm's post at olarila.com and his explanation was a bit different. That's how I got informed of this AGPM problem. Your explanation is different but your getting great results with your NVIDIA GPU.

The threshold high makes sense but the threshold low makes me scratch my head but they don't conflict with each other?

I didn't understand how it worked before either. But to be honest I think this is how it works, we don't know for sure because Apple don't provide any documentation.

You should separate the Threshold_High and Threshold_Low table. No they don't conflict, because they have an other function.

 

The Threshold_Low just lets the GPU clockdown when needed (e.g. the GPU-load is lower than value).

 

I was also think about the following two:

Threshold_High_v

Threshold_Low_v

 

I think they clock the Intel HD GPU Voltage. _v = Voltage (?)

Link to comment
Share on other sites

From the results, the Multiple Iron Fist Head killed the Intel HD Graphics. I mean it is an integrated graphics chip so performance will never be good as dedicated graphics cards. There was not much difference whether running in Battery or connected though AC. Also, keep in mind that OS X uses OpenGL in games, not DirectX. Again performances vary.

 

But here i have poor performance even at single Iron Fist Head test (laptop connected though AC & untouched AGPM kext) !!

 

Open_GL_Test.png

 

This does not make sens ! i'll try to mod some values in AGPM's plist & feedback

Link to comment
Share on other sites

Same results for me in this test.... is possible that the GPU didn't goes to full power when render this test.

 

 

 

But here i have poor performance even at single Iron Fist Head test (laptop connected though AC & untouched AGPM kext) !!

 

Open_GL_Test.png

 

This does not make sens ! i'll try to mod some values in AGPM's plist & feedback

Link to comment
Share on other sites

@Hyper_Thread and tivimac

 

What does OpenGL Extensions viewer say? Show me a screenshot. This is how mine looks like:

 

post-620531-0-39696900-1370195543_thumb.png

 

As for the Fist Boxer Head, this is what you should be seeing. From what I remember, I never did anything special that would accelerate the performance of the Intel HD Graphics:

 

post-620531-0-92628700-1370195609_thumb.png

 

post-620531-0-18335600-1370195622_thumb.png

 

I understand if there is some lag here and there, the X3100 had the same problem but your situation is new. You guys have Quartz Extreme running?

Link to comment
Share on other sites

I have :

- Both Quartz Extreme & Core Image running.

- Proper loading AICPM & AGPM kexts.

- My DSDT is properly patched (DGTP, LPC, SMBUS, PNLF, Natit override...)

- Using MacBookPro_6,1 on ML 10.8.2 (graphic kexts are also for 10.8.2)

 

But according to your screenshot, i notice that my OpenGL version is 2.1 APPLE-8.0.61

I don't know if this is updated by 10.8.3 or i'm missing some thing ?!!

Link to comment
Share on other sites

I have :

- Both Quartz Extreme & Core Image running.

- Proper loading AICPM & AGPM kexts.

- My DSDT is properly patched (DGTP, LPC, SMBUS, PNLF, Natit override...)

- Using MacBookPro_6,1 on ML 10.8.2 (graphic kexts are also for 10.8.2)

 

But according to your screenshot, i notice that my OpenGL version is 2.1 APPLE-8.0.61

I don't know if this is updated by 10.8.3 or i'm missing some thing ?!!

 

You still use 10.8.2? I highly recommend you update to 10.8.3 as I found that there is better performance here. Everyone else that is on 10.8.2 still should upgrade. I mean you should have no problem at all in upgrading. Just remember to delete the Intel HD Graphics kexts before rebooting. Again back up any other modified kext that you use except for the Intel HD Graphics kexts. Those must be deleted.

Link to comment
Share on other sites

I have the same specs as you ... only difference is at i5...mine i5-540m

 

 

@Hyper_Thread and tivimac

 

What does OpenGL Extensions viewer say? Show me a screenshot. This is how mine looks like:

 

post-620531-0-39696900-1370195543_thumb.png

 

As for the Fist Boxer Head, this is what you should be seeing. From what I remember, I never did anything special that would accelerate the performance of the Intel HD Graphics:

 

post-620531-0-92628700-1370195609_thumb.png

 

post-620531-0-18335600-1370195622_thumb.png

 

I understand if there is some lag here and there, the X3100 had the same problem but your situation is new. You guys have Quartz Extreme running?

Link to comment
Share on other sites

After playing with AGPM's stings in info.plist, i've been able to gain 50fps in tests.

The best results was given by the following edit :

 

<key>MacBookPro6,2</key>
<dict>
<key>LogControl</key>
<integer>1</integer>
<key>Vendor8086Device0046</key>
<dict>
<key>BoostPState</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
<key>BoostTime</key>
<array>
<integer>3</integer>
<integer>3</integer>
<integer>3</integer>
<integer>3</integer>
</array>
<key>Heuristic</key>
<dict>
<key>ID</key>
<integer>0</integer>
<key>IdleInterval</key>
<integer>200</integer>
<key>SensorOption</key>
<integer>1</integer>
<key>Threshold_High</key>
<array>
<integer>50</integer>
<integer>75</integer>
<integer>92</integer>
<integer>100</integer>
</array>
<key>Threshold_High_v</key>
<array>
<integer>70</integer>
<integer>80</integer>
<integer>92</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>55</integer>
<integer>80</integer>
<integer>94</integer>
</array>
<key>Threshold_Low_v</key>
<array>
<integer>0</integer>
<integer>75</integer>
<integer>85</integer>
<integer>94</integer>
</array>
</dict>
<key>control-id</key>
<integer>16</integer>
<key>max-power-state</key>
<integer>15</integer>
<key>min-power-state</key>
<integer>0</integer>

 

As you can notice, i removed the two other devises & replaced Heuristic keys with HeuristicOld ones (ID changed also to 0)

But as many tests as I do, I do not think that this problem is only caused by AGPM, look at this :

 

IOReg.jpg

  • Like 1
Link to comment
Share on other sites

As you can notice, i removed the two other devises & replaced Heuristic keys with HeuristicOld ones (ID changed also to 0)

But as many tests as I do, I do not think that this problem is only caused by AGPM, look at this :

 

IOReg.jpg

 

I don't see anything suspicious about that. Looks the same for me too.

 

post-620531-0-37739900-1370288325_thumb.png

 

I want you to do a little experiment and tell me the result. Go to System>Library>Extensions. Find "Apple Graphics Control" kext and make a backup of it in case something goes wrong. Right click and select "Show Package Contents", then Contents>PlugIns and delete "AppleMuxControl" kext. Then repair kext permissions and cache and reboot.

Link to comment
Share on other sites

got same issue as Hyper_Thread.

 

I have Samsung q330 with i3-370m+optimus and my mate has Asus with same i3+370m+ same optimus. both laptops have:

- disabled optimus via DSDT

- working brightness

- _DSM override

 

however, Asus runs games faster than mine Sams. I've noticed, that system profiler shows 2,51GHz for Asus and 2,39GHz for mine.

the only difference between IGPUS in revision (0x0002 mine vs 0x018 asus)

Could it depend on AppleIntelPowerManagement or P-States C-States?

 

I'll try AGPM fix as soon as I get home and write back.

--

GhostRider, can you please upload your DSDT? I'll try to use your CPU section and feedback asap.

Link to comment
Share on other sites

I'm not sure if my files are gonna help you but here you go. Maybe it will give you a clue or not. I barely have any edits on the DSDT. I'm still trying to find a solution for sleep, and i'm trying to fix an overheating issue. Power management works fine but if the computer stays at 2.39 GHz for too long, computer immediately shuts down. Problem does not occur in Windows.

Gateway NV5932u DSDT.zip

Gateway NV5932u IOReg.zip

  • Like 1
Link to comment
Share on other sites

Well my friends, the Mac App Store just told me that Mountain Lion 10.8.4 is now available to download and install. Of course I will download the Combo Update from the Apple website to avoid any issues. Apparently during the development, there were focuses on improving graphics performance and other little things. I will update my hackintosh soon as well as adding support for 10.8.4.

 

If everything goes well, a new Intel HD Graphics 10.8.4 QE/CI will be available for download soon. It will be similar to the 10.8.3 QE/CI package with alternative framebuffers.

 

I will also add a new download link for Intel HD Graphics 10.8.4 CI for those who cannot enable Core Image.

 

Or if you can't wait, Vertek's patcher should be able to do the job and patch your own framebuffer for compatibility. Again all credit goes to Verteks who has secretly disappeared from the community. :ph34r:

Link to comment
Share on other sites

 Share

×
×
  • Create New...