Jump to content

What is the state of getting Quartz Extreme to work?


  • Please log in to reply
75 replies to this topic

#21
MordLust

MordLust

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts

FYI, I've resumed work on the OpenGL support in VMsvga2, and I've got VLC video player and Preview [OS 10.6 variant] working. [Both these Apps require a hardware GL driver].

Posted Image

Posted Image


Wow this is amazing!

Are you able to load Final Cut Pro with this? that would be great!

please share your work soon! cant wait...

#22
Rob_Quads

Rob_Quads

    InsanelyMac Protégé

  • Members
  • Pip
  • 30 posts
This looks like good progress. Would be happy to test if required.

#23
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male
VMsvga2 v1.3.0d1 v1.3.0d7 Development Preview Edition
with hardware OpenGL support.

Host Requirements
  • VMware Workstation 7.x with 3D Acceleration and Screen-Object enabled. Set your guest vram size to at least 32MB.
  • Don't ask me if the GL driver works on Fusion or Workstation/Linux. Test it yourself. I don't have those platforms set up. VMware's SVGA3D API is modeled on Direct3D, so it works fairly smoothly. On other platforms, it's implemented using an OpenGL host driver, and some features may not map well.
  • The VMware host must have a Direct3D or OpenGL driver that provides access to the GPU. If you run a standalone VMware kernel without a host OS, I don't think 3D Acceleration is available [someone correct me if I'm wrong].
Guest requirements
  • OS 10.6.3 or Above.
  • AppleIntelGMA950GLDriver.bundle must be installed in /System/Library/Extensions [This is normally the case].
Applications Tested
  • VLC Video Player. Seems to have everything it needs and works 100%.
  • Preview for OS 10.6.x. Seems to have what it needs. Uses pipeline fences occasionally which aren't implemented. All fence waits return immediately, so it doesn't hang.
  • Apple's Finder works. It uses OpenGL for its icon and "Cover Flow" views. In fact, it does some tricky depth-buffering and alpha-blending in the "Cover Flow" view, which helped quite a bit in figuring things out.
  • Flash Prayer 10.1r102 works. It calls CGLQueryRendererInfo(), rejects the renderer and then proceeds to render in software :blink:
  • QuickTime X works. It also rejects the renderer and proceeds to render in software.
  • iTunes works. Uses legacy IOQTCompoments for video which uses YUV overlay. No GL.
  • Chess - the only 3D game I tried. The initial board is drawn, although lighting and mipmapping detail is missing. The game itself doesn't play due to unimplemented GL features.
  • The WindowServer's GLCompositor (aka QuartzExtreme) - not even close. The screen is all-black. It's also quite a stress test, as it creates about 50 textures right off the bat. The system responds to keystrokes and mouse clicks, so it can be shut down safely if you know the sequence. QE also uses a couple of untested texture types, and whatnot. A lot of work still to do for that.
  • I also tried some 3D sample from Apple's OpenGL sample collection, and it worked in part, failed in part due to missing features.
Notes
You may notice the screen flashes occasionally. Everytime this happens there's a message in vmware.log "detaching from window system... connecting to window system". This happens after the driver creates its first Direct3D9Device (in response to the first application to use GL), or after the driver destroyes its last D3D9Device when the last GL application closes. The MKS backend switches between rendering with GDI to rendering with Direct3D and vice versa. This causes a brief blank window.

Kernel Flags
  • "-vmw_no_gl" disables the GL driver. VMsvga2 will still operate as in version 1.2.x.
  • "-vmw_qe" enables QuartzExtreme. QE doesn't work, but if you want to see for yourself :D

This driver is still a work in progress. There are many unimplemented GL features - FBOs, pipeline fences, mipmapping, cube-maps, volume textures, fog, misc render states, pixel shaders, etc. If an application attempts to use them, it may fail in part or in whole. The driver hasn't been fully optimized yet either, so some things don't work as efficiently as they can be made to.

As for the guest vram requirement - the driver supports VMware's GMRs, which means it can do memory transfers to or from host vram from anywhere in guest memory, not just the vram. I plan to eventually rid the driver of all dependence on guest vram, so it will work with the minimum allowed of 16MB guest vram. Right now the driver still needs some extra guest vram for buffering render targets and vertex arrays. Textures [which can be quite big] are not buffered in guest vram - which reduces guest vram requirement quite a bit.

Update [Jan 12]: Uploaded VMsvga2 v1.3.0d2 and updated link.
Update [Jan 14]: Uploaded VMsvga2 v1.3.0d3 and updated link.
Update [Jan 17]: Uploaded VMsvga2 v1.3.0d4 and updated link.
Update [Jan 18]: Uploaded VMsvga2 v1.3.0d5 and updated link.
Update [Jan 19]: Uploaded VMsvga2 v1.3.0d6 and updated link.
Update [Jan 23]: Uploaded VMsvga2 v1.3.0d7 and updated link.

Where to get it?
An installation package can be found here (SnowLeopard only). I'll update the development version occasionally as it proceeds.

#24
luckman212

luckman212

    InsanelyMac Protégé

  • Members
  • Pip
  • 49 posts
This is really, really cool. Amazing! :P

#25
xbc

xbc

    InsanelyMac Protégé

  • Members
  • PipPip
  • 74 posts
  • Gender:Male
Wow....

I must say I just tested the beta driver.... and Wow.... closer to a fully functional virtual OSX system

Thanks....

Keep up the good work :)

BTW What version of VLC are you using, becuase I get a white screen on VLC 1.1.5.... all other stuff I have tested works great

#26
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male

BTW What version of VLC are you using, becuase I get a white screen on VLC 1.1.5....

I'm using VLC 1.1.5, so the problem is not with VLC. If you're seeing white, it means the texture isn't being attached to the drawing context, so it's only drawing the vertex diffuse color, which is white. This could be for two reasons
1) A problem in the driver that causes the attachment of the texture to fail.
2) VLC expects the [host] GPU to support YUV 4:2:2 textures. These texture formats are supported by Direct3D without a pixel shader, so I use them directly. If the GPU isn't capable of drawing YUV 4:2:2 textures, then VLC won't work. I don't support pixel shaders yet, so that's not an option for now.

So the questions are:
1) Are you running on a Windows host?
2) did you make sure the guest vram requirement is met?
3) Can you upload the movie showing up as white so I can test it?
4) What's your host GPU?

Thanks.

PS
As for the driver's other limitations, any GL app that uses a single 2D-texture stage with diffuse color, and doesn't try to read back rendered pixels, should work. All depth buffering, alpha blending on the render target and stencil ops are supported.

#27
ataxy

ataxy

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts

VMsvga2 1.3.0d1 Development Preview Edition
with hardware OpenGL support.

Host Requirements

  • VMware Workstation 7.x with 3D Acceleration and Screen-Object enabled. Set your guest vram size to at least 32MB.
  • Don't ask me if the GL driver works on Fusion or Workstation/Linux. Test it yourself. I don't have those platforms set up. VMware's SVGA3D API is modeled on Direct3D, so it works fairly smoothly. On other platforms, it's implemented using an OpenGL host driver, and some features may not map well.
  • The VMware host must have a Direct3D or OpenGL driver that provides access to the GPU. If you run a standalone VMware kernel without a host OS, I don't think 3D Acceleration is available [someone correct me if I'm wrong].
Guest requirements
  • OS 10.6.3 or Above.
  • AppleIntelGMA950GLDriver.plugin must be installed in /System/Library/Extensions [This is normally the case].
Applications Tested
  • VLC Video Player. Seems to have everything it needs and works 100%.
  • Preview for OS 10.6.x. Seems to have what it needs. Uses pipeline fences occasionally which aren't implemented. All fence waits return immediately, so it doesn't hang.
  • Apple's Finder works. It uses OpenGL for its icon and "Cover Flow" views. In fact, it does some tricky depth-buffering and alpha-blending in the "Cover Flow" view, which helped quite a bit in figuring things out.
  • Flash Prayer 10.1r102 works. It calls CGLQueryRendererInfo(), rejects the renderer and then proceeds to render in software :D
  • QuickTime X works. It also rejects the renderer and proceeds to render in software.
  • iTunes works. Uses legacy IOQTCompoments for video which uses YUV overlay. No GL.
  • Chess - the only 3D game I tried. The initial board is drawn, although lighting and mipmapping detail is missing. The game itself doesn't play due to unimplemented GL features.
  • The WindowServer's GLCompositor (aka QuartzExtreme) - not even close. The screen is all-black. It's also quite a stress test, as it creates about 50 textures right off the bat. The system responds to keystrokes and mouse clicks, so it can be shut down safely if you know the sequence. QE also uses a couple of untested texture types, and whatnot. A lot of work still to do for that.
  • I also tried some 3D sample from Apple's OpenGL sample collection, and it worked in part, failed in part due to missing features.
Notes
You may notice the screen flashes occasionally. Everytime this happens there's a message in vmware.log "detaching from window system... connecting to window system". This happens after the driver creates its first Direct3D9Device (in response to the first application to use GL), or after the driver destroyes its last D3D9Device when the last GL application closes. The MKS backend switches between rendering with GDI to rendering with Direct3D and vice versa. This causes a brief blank window.

Kernel Flags
  • "-vmw_no_gl" disables the GL driver. VMsvga2 will still operate as in version 1.2.x.
  • "-vmw_qe" enables QuartzExtreme. QE doesn't work, but if you want to see for yourself :unsure:

This driver is still a work in progress. There are many unimplemented GL features - FBOs, pipeline fences, mipmapping, cube-maps, volume textures, fog, misc render states, pixel shaders, etc. If an application attempts to use them, it may fail in part or in whole. The driver hasn't been fully optimized yet either, so some things don't work as efficiently as they can be made to.

As for the guest vram requirement - the driver supports VMware's GMRs, which means it can do memory transfers to or from host vram from anywhere in guest memory, not just the vram. I plan to eventually rid the driver of all dependence on guest vram, so it will work with the minimum allowed of 16MB guest vram. Right now the driver still needs some extra guest vram for buffering render targets and vertex arrays. Textures [which can be quite big] are not buffered in guest vram - which reduces guest vram requirement quite a bit.

Where to get it?
An installation package can be found here (SnowLeopard only). I'll update the development version occasionally as it proceeds.

just tryed the beta driver, divx now loads video while before it use to give me an error but video is not displayed but i get sounds also movies that use to play well in quicktime are now laggy and slow probably due to the same thing as ''You may notice the screen flashes occasionally''
this is the system-
asus p5n-d
intel C2Q 8400
4gig ddr2 800
nvidia gtx 275
win7 ultimate 32bit
vmware workstation: 7.1.2 build-301548
Osx 10.6.6
so all in all this seems to be on the good path to a usable 3d driver
ps: chess is better gfx wise then before but while i use to be able to play before now the game runs but i am no longer able to play

#28
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male

just tryed the beta driver, divx now loads video while before it use to give me an error but video is not displayed but i get sounds also movies that use to play well in quicktime are now laggy and slow

Ok, thanks. I tried divx, and it uses several OpenGL features that aren't implemented yet, so it can't work for the time being. As for QuickTime, you're right about the slowdowns, and I don't have a clue why. It's doing all the video rendering in software. When I disable the GL driver, QT still experiences the slowdowns. When I disable the accelerator completely and work in "VMwareGfx" mode, the slowdowns go away. I'll look into it when I have time.

Correction: I tried several more times. QuickTime experiences slowdowns even with the accelerator disabled and also with VMsvga2 v1.2.3. Looks like it's caused either by excessive paging or by the software video renderer not being able to sustain a smooth time-flow inside the VM. :rolleyes: I don't use QT much so I hadn't noticed it before.

PPS: the slowdown issue with QT is intermittent. Sometimes you play the movie again shortly after it happens and it plays fine.

#29
Rob_Quads

Rob_Quads

    InsanelyMac Protégé

  • Members
  • Pip
  • 30 posts

So the questions are:
1) Are you running on a Windows host?
2) did you make sure the guest vram requirement is met?
3) Can you upload the movie showing up as white so I can test it?
4) What's your host GPU?


I'm also seeing the same so will answer the questions

Vmware Workstation 7.1.2
VRAM is 128MB looking at System Information
The videos I have been testing are all 700MB+
Host GPU is NVidia Quadro FX 880M

#30
ataxy

ataxy

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts

Ok, thanks. I tried divx, and it uses several OpenGL features that aren't implemented yet, so it can't work for the time being. As for QuickTime, you're right about the slowdowns, and I don't have a clue why. It's doing all the video rendering in software. When I disable the GL driver, QT still experiences the slowdowns. When I disable the accelerator completely and work in "VMwareGfx" mode, the slowdowns go away. I'll look into it when I have time.

Correction: I tried several more times. QuickTime experiences slowdowns even with the accelerator disabled and also with VMsvga2 v1.2.3. Looks like it's caused either by excessive paging or by the software video renderer not being able to sustain a smooth time-flow inside the VM. :( I don't use QT much so I hadn't noticed it before.

PPS: the slowdown issue with QT is intermittent. Sometimes you play the movie again shortly after it happens and it plays fine.

humm thats weird on my computer with VMsvga2 v1.2.3 it does not lag as long as the window is not to big (6xx X 2xx) but on the 1.3.0.1 beta it basically lag no mather what but anyway still a beta is a beta so i am pleased with the possibility of seeing a full or almost full support of gl in the futur

#31
vampirnata

vampirnata

    InsanelyMac Protégé

  • Members
  • Pip
  • 18 posts
First of all a huge thank you to Zenith! I dream of one day being able to comprehend how to even start a project like this.

Second, everything seems to be working as you reported except for one thing:

The finder window has some minor problems. The text seems a little blurry and I can't click on files and folders in the finder. What I have to do is click drag into the icon, then it gets selected. Hope that is clear enough.

Upon further investigation it seems to be icon rendering related (strange). If I change the view to "in a list" or "column" then I can click the folders.

Other issues:

App Store flashes when you move the mouse over various icons.

How do I use the kernel flags to disable opengl. I want to do this and then recheck all the above.

#32
TheGreatDeceiver

TheGreatDeceiver

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 862 posts
  • Location:Soederhof/Germany
Zenith, this is terrific. thank you for the audio and vga updates!

#33
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male

becuase I get a white screen on VLC 1.1.5....

I found another likely cause of this which is that I used an incorrect formula to do the color blend in VLC. I didn't notice it at first. It may be that on my GPU the wrong formula works anyway, and on other GPUs it draws white. I'll have this fixed in the next upload. I've also got DivX working, but I need to tie up a loose end before another public build.


The finder window has some minor problems. The text seems a little blurry and I can't click on files and folders in the finder. What I have to do is click drag into the icon, then it gets selected. Hope that is clear enough.

There are two issues
  • The blurry text is "by design" because Finder enables dithering. I noticed this and considered disabling dithering in the driver, but this will disable dithering for all applications. I'm not sure why the software renderer doesn't show dithering. Either I'm doing something out of order, or the software renderer doesn't support dithering, or Finder only enables dithering with the hardware renderer.
  • Icon-click doesn't work - is because Finder uses FBOs and some other feature I haven't yet implemented. So it's a bug and will [hopefully] get fixed once the driver is feature-complete. In the meantime, as a workaround, if you click on the icon text it will select the icon :D

App Store flashes when you move the mouse over various icons.

That's an AppStore feature unrelated to the driver :P It flashes even with the accelerator fully disabled.

How do I use the kernel flags to disable opengl. I want to do this and then recheck all the above.

  • In the bootloader, press "enter" to stop the boot while it's counting down, and then type "-vmw_no_gl" on the command line, then press "enter" to boot.
  • In com.apple.Boot.plist, there's a "<Kernel Flags>" entry where you can add permanent kernel flags.

humm thats weird on my computer with VMsvga2 v1.2.3 it does not lag as long as the window is not to big (6xx X 2xx) but on the 1.3.0.1 beta it basically lag no mather what

I'm not sure what's up with this. It could be due to excessive paging because of a memory shortage. QT renders everything in software, and the only "use" it makes of the GL driver is to query the renderer at the start [once] and then reject it. It's not calling the GL renderer in a loop. With no GL apps running, the driver doesn't use any more memory than it did in v1.2.3. So the only thing that could be an issue is I broke some of the existing code. I did make some changes, but when I test, I get QT slowdowns with similar frequency with v1.2.3... :)
PS: I fixed a bug where the driver was allocating too much memory for textures, and it'll be in the next build, but again - this only matters if GL is in use, so I don't know whether it'll help QT...

Update I uploaded a fresh build v1.3.0d2 and updated the link in post #23.
Changelog for v1.3.0d2
  • Added mipmapping support.
  • Added a canned collection of pixel shaders needed for VLC, Chess, DivX. Generic pixel-shader support is still on the to-do list. [I'd be happy if someone volunteered to help - I need a shader bytecode translator for this.]
  • Fixed a problem with the color blend for VLC. It still requires the host GPU to support packed YUV422 textures.
  • Chess board now displays correctly. The game still doesn't play (it uses glReadPixels which remains unimplemented.)
  • DivX works (at least for me :)) Seems to require less YUV support from the GPU, as it uses unpacked YUV with its own supplied pixel-shader ;) (and now I have a YUV->RGB conversion shader thanks to DivX LOL).
  • Due to the use of pixel-shaders, the host GPU is now required to support D3D pixel-shader model 2.0. This is the oldest model I could use, so I think it should be ok (unless you have a really ancient GPU.)
  • Fixed an excessive memory allocation (3x) for textures.


#34
user515

user515

    InsanelyMac Protégé

  • Members
  • Pip
  • 4 posts
just wanted to say Thank you !

What you are doing is GREAT !

I've been trying to get Mac OS in 3 different machines, but decided to stop because none of their graphic cards are supported, I couldn't even get native resolution.

Now thanks to your work, we can enjoy this OS (or get our job done) with much less hassle.




keep going !

#35
vampirnata

vampirnata

    InsanelyMac Protégé

  • Members
  • Pip
  • 18 posts
It is really so refreshing to actually hear back from developers :)

You rock! Keep it up! And thank you for your answers.

#36
ataxy

ataxy

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
thx great job so far
QT is back at been usable it even plays movie in a bigger resolution then before
divx is still a no go for me i get the sound but the vid window remains black

#37
TheGreatDeceiver

TheGreatDeceiver

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 862 posts
  • Location:Soederhof/Germany
10.6.6, Vmware 7.1.3, Windows 7 64 bit, i7 920. vram=128Mb, 3D graphics acceleration enabled. AppleIntelGMA950GLDriver.plugin installed.

installed the latest VMsvga2_v1.3.0d2. I see the occasional flashes of the screen. However, video is not working. avis I open in vlc are black, sound works. chess opening but I cannot play.

host PC has ATI Radeon 3850. OpenGL on host as far as I can tell from graphics settings is working.
one part I don't understand is "Screen-Object enabled". Could that be the problem?

thank you

#38
xbc

xbc

    InsanelyMac Protégé

  • Members
  • PipPip
  • 74 posts
  • Gender:Male
Well tested last version, and I now get a black screen on VLC on avi, divx, xvids, and mkv

My info is: Windows 2003 Server (with all the 3d stuff on), VMWorkstation 7.1.3, vram 128, ATI RADEON HD 5450 512MB

Same problem with chess as previous poster, maybe it has to do with Radeon Cards?

#39
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male
Let's sort this out

Video Issues
Those having problems with any video app - VLC/DivX, whatnot - give me a few days, I'll write a small host-side program that you can run and will list the necessary GPU capabilities. Then I can figure out whether the video is not working due to the driver doing something wrong, or due to the driver using unsupported host GPU features. If it turns out to be due to unsupported GPU features, I won't be able to solve it overnight, but I may find alternative "downgrade" solutions for video later on.

Non-Video Issues
Is anyone still having problems with non-video apps like
Preview
Chess board display [I [i]know[/i] the game doesn't play...]
Finder [other than the couple of issues mentioned in post #31]
iLife, FincalCut or whatever other app you may have tried that I didn't test.
Thanks.



one part I don't understand is "Screen-Object enabled". Could that be the problem?

Not likely. The GL driver doesn't really need screen-object, I just listed that because I haven't tested the alternative code I wrote for when screen-object is unavailable ;)

If your guestos is one of the "darwin..." types, then screen-object is enabled by default.
If your guestos is one of the "freebsd..." types, you need to enable screen-object by putting
svga.enableScreenObject = "TRUE"
in your vmx file.



QT is back at been usable it even plays movie in a bigger resolution then before

Good, it was probably the memory allocation. Finder creates some huge textures, and they remain resident all the time [because Finder is always running in the background].

#40
Zenith432

Zenith432

    InsanelyMac Sage

  • Developers
  • 416 posts
  • Gender:Male
Ok, here we go.
Uploaded v1.3.0d3.

I added GPU feature detection.

Install v1.3.0d3 and boot the system.
Open vmware.log.
Scroll and look for the lines
IOAC: start
IOAC: Screen Object On
IOAC: SVGA3D On, 3D HWVersion == 2.0
IOAC: GPU Feature Detection
Below that you'll find a dump of GPU capabilities.

First, check "Pixel Shader Version". It should be at least 2.0 [ps_2_0]. If you see anything less, please msg me. Microsoft deprecated PS versions earlier than 2.0 around the time Vista came out, but I may be able to down-version some of the simpler pixel-shaders I used.

Now, for VLC, look for "UYVY Caps". It should say "Texture", and also "ConvertToARGB" under it (not sure the "convert" is needed.) If you can't find this, or can't find anything about UYVY, VLC won't work.

For DivX, look for "L8 Caps", it should say "Texture" under it. It's actually simpler than the UYVY format that VLC needs. It's hard to believe any GPU doesn't support this format.

I also fixed some bugs and changed one of the settings to take the GPU capabilities into account. This may or may not have an effect on the ability to display video.

I tested that there is no regression [at least on my setup] - Preview, Chess, Finder, VLC & DivX still work as before (with the known issues.)

Link to download in the original post.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy