VirtualBox

Ticket #9111 (new defect)

Opened 3 years ago

Last modified 2 years ago

2D video acceleration broken on Intel HD graphics

Reported by: msc Owned by:
Priority: major Component: guest additions
Version: VirtualBox 4.0.10 Keywords:
Cc: Guest type: Windows
Host type: Linux

Description

The 2D video acceleration guest addition for Windows XP does not work with Intel HD graphics in an Ubuntu host. I am filing this bug here because I do not know if the problem is with the Intel/FreeDesktop GL driver or the way VirtualBox is using it. I will file a bug also at freedesktop.org and cross link the bugs.

It would be really helpful if someone from VirtualBox could (a) describe what GL commands are used by the 2D video acceleration feature and (b) suggest some easier test environment than what follows.

My use cases are with the Sony LocationFree player and the SlingPlayer plug-in for Firefox 4. Both of these require special server devices.

With the Intel driver version 7.7 there is an effect like you are watching the video through vertical strips of beveled glass and there are vertical slices of the video missing.

With driver versions 7.9devel, 7.10 and 7.11devel you simply get a white rectangle where the video should be.

The SlingPlayer plug in will work without video acceleration. LocationFree will not.

This problem has existed in at least the last three revisions of VirtualBox

Attachments

vbox.log Download (3.9 KB) - added by msc 3 years ago.
Output log from VBoxTestOGL

Change History

comment:1 Changed 3 years ago by msc

The matching bug at freedesktop.org is 38747. Please see  https://bugs.freedesktop.org/show_bug.cgi?id=38747.

I could not find any similar report on VirtualBox's TRAC. Is 2D video acceleration known to work with other GPUs? Is it only Intel HD graphics that has this problem?

I am using Ubuntu 11.01 (natty). I also had the problem with 10.04 (maverick). 10.01 (lucid) has the beveled glass effect.

comment:2 Changed 3 years ago by msc

Reproduction is easy. Just run one of the programs mentioned. LocationFree displays the problem even before it connects to the video source but you have to have first completed set-up which requires connecting to the LocationFree device.

comment:3 follow-up: ↓ 4 Changed 3 years ago by Technologov

Read "Chapter 12. Troubleshooting", 12.2.4. GUI: 2D Video Acceleration option is grayed out

It suggests:

VBoxTestOGL --log "log_file_name" --test 2D

-Technologov

comment:4 in reply to: ↑ 3 Changed 3 years ago by msc

Replying to Technologov:

Read "Chapter 12. Troubleshooting", 12.2.4. GUI: 2D Video Acceleration option is grayed out

It suggests:

VBoxTestOGL --log "log_file_name" --test 2D

I tried this. VBoxTestOGL does nothing. It is completely silent, no output. It's exit code is 0 though. When I specify --log as suggested, the log file is not created. Do I have to do something else before running this?

comment:5 Changed 3 years ago by msc

I tried again and this time VBoxTestOGL did write a log file. It does not produce any other visible sign of running. The first part of the log looks like the same info. dumped by glxinfo, i.e GL version & extension strings. The last part looks like it is verifying the presence of extensions used by the 2D video acceleration:

00:00:00.393 GL_ARB_multitexture: 1 00:00:00.393 GL_ARB_shader_objects: 1 00:00:00.393 GL_ARB_fragment_shader: 1 00:00:00.393 GL_ARB_pixel_buffer_object: 1 00:00:00.393 GL_ARB_texture_rectangle: 1 00:00:00.393 GL_EXT_texture_rectangle: 1 00:00:00.393 GL_NV_texture_rectangle: 1 00:00:00.393 GL_ARB_texture_non_power_of_two: 1 00:00:00.393 GL_EXT_framebuffer_object: 1 00:00:00.393 Max Tex Coords (8), Img Units (16) 00:00:00.394 2D is supported! 00:00:00.394 Testing 2D Succeeded!

As you can see, 2D is supposed to be supported.

Does this test only verify the presence of the needed GL extensions or does it try to draw something off-screen? If the former, it is not sufficiently thorough and will not help the driver writers reproduce the problem; if the latter, it is getting different results from the real 2D acceleration or the test is buggy.

Changed 3 years ago by msc

Output log from VBoxTestOGL

comment:6 Changed 3 years ago by msc

Can someone from the VirtualBox team confirm that 2D video acceleration is known to work with at least some GPUs?

Do the developers of this guest addition have any test programs for this feature that I could try and could pass to the Intel HD driver writers? If so, please send me links or attach them here.

comment:7 follow-up: ↓ 8 Changed 3 years ago by Technologov

What works for me ?

NVIDIA GTX 560 GPUs (NV 266.44) on Windows hosts. (AFAIK all modern NVIDIA GPUs works, GeForce 8800 or newer)

+ no problems doing "VBoxTestOGL --log "log_file_name" --test 2D". It works fine. You can try absolute path, like --log "C:\test2d_log.txt"

-Technologov

comment:8 in reply to: ↑ 7 Changed 3 years ago by msc

Replying to Technologov:

What works for me ?

NVIDIA GTX 560 GPUs (NV 266.44) on Windows hosts. (AFAIK all modern NVIDIA GPUs works, GeForce 8800 or newer)

+ no problems doing "VBoxTestOGL --log "log_file_name" --test 2D". It works fine. You can try absolute path, like --log "C:\test2d_log.txt"

-Technologov

Thanks for the information. However I do not see how the 2D video acceleration Windows guest addition is relevant to a Windows host. Is that a typo? Did you mean Windows guest? Or are you running Windows as a guest under a Windows host? If so, I expect the code is completely different from that for a Linux host.

I managed to run VBoxTestOGL as noted on 7/04. But the output is not helpful to determining the drawing commands used by this guest addition.

So I repeat my questions of 7/23.

comment:9 Changed 3 years ago by Technologov

Technically VBox uses the same OpenGL commands, no matter on which host, but Windows host is important, because it has _much_ better quality drivers. Much less bugs. Anyway I suggest you to try NVIDIA GPU, as they have less bugs in drivers.

VBoxTestOGL only tests for commands existence, not the correctness of the drivers.

-Technologov

comment:10 Changed 3 years ago by msc

Can someone please tell me the location of the source files for the 2D video acceleration guest addition? Since nobody has been able/willing to tell me what commands are used, I will attempt to decipher the source and write a program to reproduce the problem for the guys who work on the Intel HD driver.

@Tecnnologov I am not in a position to change the GPU on my device.

comment:11 Changed 3 years ago by Technologov

When you asked if it works at "least with some GPUs", I was under impression, that you have a lab with all 3 major vendors of GPUs (Intel/AMD/NVIDIA).

I'm not a VBox developer (just old-time community member), but I have a rough idea where it may be worth looking first.

The guest part :

./VirtualBox-4.1.0_OSE/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm

-Technologov

comment:12 Changed 3 years ago by misha

Sorry for delay in response. Unfortunately I do not have Intel HD graphics, neither do I have a LocationFree base station that seems required for testing the LocationFree player.
Anyway, here are some explanation of the 2D Video Acceleration feature that should clarify the things a bit: this feature accelerates the DirectDraw Overlay functionality by passing the Overlay-related DDraw commands to host and doing stretching & yuv->rgb conversion by means of host GPU. The GPU is accessed by means of OpenGL on the host side to make this feature portable & work on all host platforms.
So in case the the video player on the guest does not use DDraw overlay, its video playback is not accelerated.
From what I can say the LocationFree player is using DDraw overlay, so its playback should be accelerated. The main question here is what's the source of the rendiring problems in your case: whether it is really your graphics card problem, or perhaps this is the LocationFree player using the DDraw overlay in such a "special" way causing VBox 2D acceleration to misbehave.
Could you try playing some video with some other player for which the 2D acceleration is proved to be working (e.g. MPC player from k-lite codec pack) on your host with Intel HD to see if it works there.
Perhaps you could also try running the LocationFree player on some other host with e.g. NVIDIA graphics card to see if it works there.

comment:13 Changed 3 years ago by misha

Also, like Technologov said, the main part of guest part of the 2D functionality is located in src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm. Have a look at the code located under #ifdef VBOX_WITH_VIDEOHWACCEL there.
However if the problem is your video card-specific you might be more interested in the host part of the functionality since this is where the host GPU gets used.
The main part of this is located in src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp & .h files.
Let me know if you have any further questions regarding this.

But like I said in my previous comment, we first need to detect whether this is really the host GPU that is guilty, so please try running the tests suggested in my prev comment and let me know the results.

comment:14 Changed 3 years ago by palomino

I have the same problem. my enviroment: host: ubuntu 11.04 64bit guest: windows vbox version: 4.0.x 4.1.x

I tried windows media player 10 and mpc-hc, both get white screen on my i3 530(intel gma hd) 2D video acceleration worked fine on my old nvidia MCP7A mainboard(geforce 9300) with the identical vm.

comment:15 Changed 2 years ago by gmb019

Just verifying that the issue/bug exists. Had 100% working VM on AMD build with dedicated graphics card on Vista Host (32-bit), did a core upgrade (MB, CPU, RAM) and using Intel HD 4000 graphics the vertical glassy bars were shown on most videos (flash, mp4, etc). Put the dedicated card in from the old build and all was well again. There is clearly an issue with how VB is working with the Intel graphics on the SB and IB processors. Exists with both Win Media Player and MP Classic. For me, this is happening on an XP guest (32-bit), running from a Win 7 Pro Host (64-bit) on the latest VB build (4.1.16). I'd be happy to check something if that's helpful, but I'm not a developer, just a user of the product, so you'd need to be specific about what you need run or where you need it from. Thanks!

Last edited 2 years ago by gmb019 (previous) (diff)
Note: See TracTickets for help on using tickets.

www.oracle.com
ContactPrivacy policyTerms of Use