Jump to content
Welcome to InsanelyMac Forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
rcork

How to get AirPlay to work with Discrete Graphics

18 posts in this topic

Recommended Posts

What i've figured out is that you need a SandyBridge or IvyBridge CPU with Intel HD3000 or HD4000 integrated GPU and it must be enabled. The AirPlay capability relies on the hardware encode/decode function (known as Intel QuickSync) in order to work. For those people that use the integrated graphics as your only GPU, AirPlay should work out of the box. For those of us using a discrete graphics cards, you won't be able to use AirPlay by default. In order to enable it, this is what i did (on my Asus P8Z68-V motherboard).

 

1. In BIOS, under System Management, go to Graphics Management

2. Set Primary device to iGPU

3. Set memory to 512M

4. Set Initiate Integrated Graphics to Enabled (ie. Lucid)

5. Save BIOS and exit

 

I have two monitors, a Cinema Display connected to DisplayPort and an LCD connected via DVI, both connected to an ATI HD6850. I have GraphicsEnabler=Yes in org.chameleon.boot.plist.

 

When i boot, the monitors will be blank as the primary graphics device is set to the Intel HD3000 but i don't have any monitors hooked up. OSX loads and once it gets to the Login window, both monitors turn on and i can log in as usual. I can verify that both the integrated and discreet graphics cards are recognized by OSX in System Information.

 

I also tried connecting the LCD via DVI to the HD3000 and the Cinema Display to the HD6850. I can then see the boot screens on the LCD but i get strange artifacts in OSX so i decided i can live without the boot screens since my system is pretty stable and i don't have to worry about diagnosing boot problems.

post-280264-0-87619800-1340739349_thumb.png

post-280264-0-36146500-1340739818_thumb.png

Share this post


Link to post
Share on other sites

I don't believe you understand how the whole AirPlay works. It's a streaming not a signal you can push via your gpu.

 

http://support.apple.com/kb/HT4437

I don't believe you understand how it creates the stream. In fact, no one but apple knows technically "how", they create the stream but i can tell you from my personal experience that without the iGPU enabled, AirPlay doesn't work. There is similar discussions on the apple developer forums about how people without the latest Sandy Bridge cpus can't enable AirPlay either.

 

Second generation Sandy Bridge cpus and the new Ivy Bridge cpus have a hardware encoder/decoder that Intel calls QuickSync (http://www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.html) which is part of the integrated HD3000/4000 graphics. In order to take advantage of the hardware encoder, the integrated graphics of the CPU must be enabled. In previous developer previews, it was possible to enable AirPlay mirroring without having the iGPU enabled. Apple was obviously using the CPU to create the encoded stream of the video buffer. In DP4, it looks like they've changed the encoding to take advantage of the hardware based encoder (reducing the CPU usage to support AirPlay), thus requiring the integrated graphics to be enabled (at least on Hacks).

 

Again, only Apple knows truly the technical details behind how they are creating the AirPlay stream but based on my testing and other reports in the developer forums, i think this is what is happening. If anyone using DP4 on an older Core 2 Duo or first generation core processor has AirPlay mirroring from Mountain Lion to AppleTV working, please post system setup and results below so we can start to figure out the true requirements. Otherwise we'll just have to wait to see what Apple says are the minimum requirements when they release ML next month.

Share this post


Link to post
Share on other sites

I see, thanks for bringing me up to par about what Airplay actually is instead of what Apple sugarcoats it to be. So in actuality it is a streaming going on involving the iGPU in some form of way. My apologies for assuming what you were talking about was the Airplay that Apple advertises and not the actuality of how Airplay works. Does Console show anything about the Airplay connection just curious as to where to start on this.

Share this post


Link to post
Share on other sites

I see, thanks for bringing me up to par about what Airplay actually is instead of what Apple sugarcoats it to be. So in actuality it is a streaming going on involving the iGPU in some form of way. My apologies for assuming what you were talking about was the Airplay that Apple advertises and not the actuality of how Airplay works. Does Console show anything about the Airplay connection just curious as to where to start on this.

 

There's nothing that would prevent apple from using the CPU to encode the stream that is sent to the AppleTV. They choose to do that on the GPU to offload the work to the GPU instead of using the CPU.

 

When i enable AirPlay, i see a lot of logs from WindowServer in Console

 

6/27/12 8:04:44.229 PM WindowServer[129]: Display 0x04248ed0: GL mask 0x1; bounds (0, 0)[2560 x 1440], 42 modes available
Main, Active, on-line, enabled, boot, OpenGL-accel, Vendor 610, Model 9226, S/N 16050753, Unit 0, Rotation 0
UUID 0x00000610000092261605075300000000, ColorProfile { 2, "LED Cinema Display"}
6/27/12 8:04:44.229 PM WindowServer[129]: GLCompositor: GL renderer id 0x01021b05, GL mask 0x0000000f, accelerator 0x00003d5b, unit 0, caps QEX|QGL|MIPMAP, vram 1024 MB
texture units 8, texture max 16384, viewport max {16384, 16384}, extensions FPRG|NPOT|GLSL|FLOAT
6/27/12 8:04:44.230 PM WindowServer[129]: Display 0x003f003f: GL mask 0x8; bounds (3584, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 3, Rotation 0
UUID 0xffffffffffffffffffffffff003f003f
6/27/12 8:04:44.230 PM WindowServer[129]: Display 0x003f003e: GL mask 0x4; bounds (3585, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 2, Rotation 0
UUID 0xffffffffffffffffffffffff003f003e
6/27/12 8:04:44.230 PM WindowServer[129]: Display 0x1b55394d: GL mask 0x2; bounds (-1680, 338)[1680 x 1050], 78 modes available
Active, on-line, enabled, OpenGL-accel, Vendor 1e6d, Model 566f, S/N 5a28d, Unit 1, Rotation 0
UUID 0x00001e6d0000566f0005a28d00000000, ColorProfile { 3, "L227W"}
6/27/12 8:04:44.230 PM WindowServer[129]: GLCompositor: GL renderer id 0x01021b05, GL mask 0x0000000f, accelerator 0x00003d5b, unit 0, caps QEX|QGL|MIPMAP, vram 1024 MB
texture units 8, texture max 16384, viewport max {16384, 16384}, extensions FPRG|NPOT|GLSL|FLOAT
6/27/12 8:04:44.569 PM WindowServer[129]: Created shield window 0x709 for display 0x04248ed0
6/27/12 8:04:44.570 PM WindowServer[129]: Created shield window 0x70a for display 0x003f003f
6/27/12 8:04:44.570 PM WindowServer[129]: Created shield window 0x70b for display 0x003f003e
6/27/12 8:04:44.579 PM WindowServer[129]: Created shield window 0x70c for display 0x1b55394d
6/27/12 8:04:44.653 PM WindowServer[129]: Display 0x04248ed0: MappedDisplay Unit 0: Mode 1920 x 1080, CGSThirtytwoBitColor, Resolution 1, IOMode 0x8000100f, IODepth 0x1, IOReturn 0x0
6/27/12 8:04:44.659 PM WindowServer[129]: Display 0x1b55394d: MappedDisplay Unit 1: Startup Mode 1680 x 1050, CGSThirtytwoBitColor, Resolution 1, IOMode 0x43e, IODepth 0x1, IOReturn 0x0
6/27/12 8:04:44.659 PM WindowServer[129]: Display mode changed
6/27/12 8:04:44.661 PM WindowServer[129]: MPAccessSurfaceForDisplayDevice: Set up page flip mode on display 0x04248ed0 device: 0x100563320  isBackBuffered: 1 numComp: 3 numDisp: 3
6/27/12 8:04:46.829 PM WindowServer[129]: MPAccessSurfaceForDisplayDevice: Set up page flip mode on display 0x1b55394d device: 0x100563d30  isBackBuffered: 1 numComp: 3 numDisp: 3
6/27/12 8:04:46.879 PM WindowServer[129]: Display 0x04248ed0: GL mask 0x1; bounds (0, 0)[1920 x 1080], 42 modes available
Main, Active, on-line, enabled, boot, OpenGL-accel, Vendor 610, Model 9226, S/N 16050753, Unit 0, Rotation 0
UUID 0x00000610000092261605075300000000, ColorProfile { 2, "LED Cinema Display"}
6/27/12 8:04:46.879 PM WindowServer[129]: GLCompositor: GL renderer id 0x01021b05, GL mask 0x0000000f, accelerator 0x00003d5b, unit 0, caps QEX|QGL|MIPMAP, vram 1024 MB
texture units 8, texture max 16384, viewport max {16384, 16384}, extensions FPRG|NPOT|GLSL|FLOAT
6/27/12 8:04:46.879 PM WindowServer[129]: Display 0x003f003f: GL mask 0x8; bounds (2944, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 3, Rotation 0
UUID 0xffffffffffffffffffffffff003f003f
6/27/12 8:04:46.879 PM WindowServer[129]: Display 0x003f003e: GL mask 0x4; bounds (2945, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 2, Rotation 0
UUID 0xffffffffffffffffffffffff003f003e
6/27/12 8:04:46.879 PM WindowServer[129]: Display 0x1b55394d: GL mask 0x2; bounds (-1680, 338)[1680 x 1050], 78 modes available
Active, on-line, enabled, OpenGL-accel, Vendor 1e6d, Model 566f, S/N 5a28d, Unit 1, Rotation 0
UUID 0x00001e6d0000566f0005a28d00000000, ColorProfile { 3, "L227W"}
6/27/12 8:04:46.879 PM WindowServer[129]: GLCompositor: GL renderer id 0x01021b05, GL mask 0x0000000f, accelerator 0x00003d5b, unit 0, caps QEX|QGL|MIPMAP, vram 1024 MB
texture units 8, texture max 16384, viewport max {16384, 16384}, extensions FPRG|NPOT|GLSL|FLOAT
6/27/12 8:04:46.882 PM WindowServer[129]: **DMPROXY** (2) Found `/System/Library/CoreServices/DMProxy'.
6/27/12 8:04:46.885 PM WindowServer[129]: **DMPROXY** (2) Found `/System/Library/CoreServices/DMProxy'.
6/27/12 8:04:46.926 PM WindowServer[129]: Display 0x04248ed0: MappedDisplay Unit 0; ColorProfile { 2, "LED Cinema Display"}; TransferTable (256, 3)
6/27/12 8:04:46.926 PM WindowServer[129]: Display 0x04248ed0: MappedDisplay Unit 0; ColorProfile { 2, "LED Cinema Display"}; TransferTable (256, 3)
6/27/12 8:04:46.927 PM WindowServer[129]: Display 0x1b55394d: MappedDisplay Unit 1; ColorProfile { 3, "L227W"}; TransferFormula (1.000000, 1.000000, 1.000000)
6/27/12 8:04:46.927 PM WindowServer[129]: Display 0x1b55394d: MappedDisplay Unit 1; ColorProfile { 3, "L227W"}; TransferFormula (1.000000, 1.000000, 1.000000)
6/27/12 8:04:46.955 PM WindowServer[129]: Display 0x04248ed0: MappedDisplay Unit 0; ColorProfile { 2, "LED Cinema Display"}; TransferTable (256, 3)
6/27/12 8:04:46.955 PM WindowServer[129]: Display 0x04248ed0: MappedDisplay Unit 0; ColorProfile { 2, "LED Cinema Display"}; TransferTable (256, 3)
6/27/12 8:04:46.956 PM WindowServer[129]: Display 0x1b55394d: MappedDisplay Unit 1; ColorProfile { 3, "L227W"}; TransferFormula (1.000000, 1.000000, 1.000000)
6/27/12 8:04:46.956 PM WindowServer[129]: Display 0x1b55394d: MappedDisplay Unit 1; ColorProfile { 3, "L227W"}; TransferFormula (1.000000, 1.000000, 1.000000)

Share this post


Link to post
Share on other sites

From the logs it would appear that the gpu is mapping to your ACD and the second monitor but your 6850 is powering these two so it has nothing to do with Airplay. If what you said is true, Airplay shouldn't have anything for the most part to do with the discrete gpu but the iGPU yet still info regarding the monitors connected to the 6850 are showing. Question though, since you're trying to Airplay sans the  TV, what do you have the iGPU Airplaying to? I see what the 6850 is doing but not totally sure about the iGPU.

Share this post


Link to post
Share on other sites

This topic is spiraling so i'll just clarify one more time. The iGPU is not powering the physical displays. AirPlay is using a hardware video encoder that is built into the Intel HD3000 to create the stream that is sent to the AppleTV. In order to use the hardware video encoder, the iGPU needs to enabled in the BIOS.

Share this post


Link to post
Share on other sites

I understand that all I was saying was that based on the log information I saw nothing pertaining to Airplay to an Apple TV is what I'm trying to get at. I got it when you said it the first time but again my post was in relevance to the logs you posted.

Share this post


Link to post
Share on other sites

Sp right now the only way to get Mirroring working is with a 3k i5 or newer/better? There is no way with a 2500k even though it does use a HD3000?

Share this post


Link to post
Share on other sites

Sp right now the only way to get Mirroring working is with a 3k i5 or newer/better? There is no way with a 2500k even though it does use a HD3000?

 

I'm using a i7 2600k

Share this post


Link to post
Share on other sites

Thanks for sharing this information.

 

I have no Videoout on my Board because its a z68 and not h68. The iGPU is only used for Virtu in in Windows for Encoding/Decoding acceleration. I think we need a hack/fix for this.

Share this post


Link to post
Share on other sites

I'm using a i7 2600k

 

Oh, I couldn't get it to work and when I read on the link to intel's site it said something about "3rd gen" cpus, so I just figured. What beta on AppleTV are you using? I'm currently on 6.0 beta 1, should work right?

Share this post


Link to post
Share on other sites

I can confirm that setting the integrated GPU as primary will enable Airplay mirroring automatically, but sadly I cannot test if it works cause I don't have an Apple TV.

Share this post


Link to post
Share on other sites

Screenception! mirroring my screen inside my screen? :|

I've already disabled the onboard graphics and won't enable it again cause I really like to see the boot process and bios. Also it was a terrible pain to set the discrete graphics as primary again as I don't have a HDMI monitor (only port in my mobo) and had to reset the bios to boot again!

Share this post


Link to post
Share on other sites

Excellent analysis. I have the same issue on my GA-Z77X-UD5H/I7- 3770 system. Can select Apple tv as output for sound but not airplay mirroring - have not been able to even get the icon to appear so far (with discrete graphics; GeForce 9800 GT)

However, airplay mirroring works fine from within iTunes.

I am curious if there are any ideas on why there is this difference? Does iTunes not use Intel Quick Sync?

Share this post


Link to post
Share on other sites

Here are my two cents. I am running ML with i5 3570K (HD4000) and Sapphire Radeon 6850. AirPlay ONLY works with my Apple TV (3rd gen.) if the HD4000 is enabled in BIOS and initialized as the primary gfx.

 

BTW: when I was on Lion 10.7.4 I was using the software AirParrot. It does basically the same thing like Apples AirPlay (streaming of Desktop and sound to Apple TV). It costs 10$ and there is a free trial version. I used it to stream Plex to my TV since Apple TV 3 is still not jailbreakable.

 

AirParrot uses the CPU to encode the stream, so there is no limitation regarding internal gpu. If you dont have the right cpu or you dont want to enable the intrnal gpu then try AirParrot.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×