Hardware-accel not working with Intel i7 6700HQ

Discussions related to using VirtualBox on Linux hosts.
Post Reply
FranceBB
Posts: 117
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Hardware-accel not working with Intel i7 6700HQ

Post by FranceBB »

Hi,
I've been using my NVIDIA GTX950M in Fedora 28, but I recently updated the kernel and it seems that NVIDIA screwed up its drivers again, so I had to uninstall the official drivers and flag out the nouveau drivers in GRUB.
I booted successfully using the integrated graphic card in my i7 6700HQ only, but when I fired up virtualbox and I tried to play a video using hardware acceleration, it didn't work: the display was black, which basically means that the host GPU was actually rendering the content, but it somehow failed to display it back to the guest OS.
I tried to use both OpenGL and D3D9 in the guest OS but they both gave the same result: video was processed, but it wasn't displayed back to the guest OS.
I know that both OpenGL calls and D3D9 calls of the guest are handled by the host as OpenGL calls due to the way virtualbox internally works, so I kinda expected the same result, but it was worth trying.
I then tried to display a video disabling hardware acceleration and it worked (although there was a lot of tiering, but whatever).

Host OS: Fedora 28 kernel 4.17.7, RAM: 16 GB (8x2) DDR4, CPU: Intel i7 6700HQ.
Guest OS: Windows XP Professional Service Pack 3 x86 + Microsoft Extended Support + PAE (with HAL unlocked).

When I used the NVIDIA dedicated graphic card, hardware-acceleration in the guest OS was working flawlessly.
Please note that Windows XP is physically installed in a real Seagate HDD, Linux is installed in another separate hard drive and virtualbox is used with the "Raw disk" mode.
I understand that hardware acceleration is still experimental and shouldn't be trusted, but I think it was worth opening a topic just to report the issue.
(In case you were wondering, I installed guest additions in safe mode as required by the manual, of course).

Screen showing the playback issue with hardware acceleration: https://i.imgur.com/ndnxAG7.png

From what I see from the log-file, it says:
00:00:02.165128 OpenGL Info: Render SPU: Opening display :0
00:00:02.171908 OpenGL Info: Render SPU: Opening display :0
00:00:02.184616 OpenGL Info: Render SPU: GL_VENDOR:   Intel Open Source Technology Center
00:00:02.184629 OpenGL Info: Render SPU: GL_RENDERER: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) 
00:00:02.184631 OpenGL Info: Render SPU: GL_VERSION:  3.0 Mesa 18.0.5
which means that the integrated GPU is correctly recognised, but the it says:
00:00:02.184674 OpenGL Info: Host does not support OpenGL extension(s):
00:00:02.184676 OpenGL Info:   GL_ARB_shadow_ambient
00:00:02.184710 OpenGL Info:   GL_ATI_texture_mirror_once
00:00:02.184739 OpenGL Info:   GL_EXT_clip_volume_hint
00:00:02.184746 OpenGL Info:   GL_EXT_blend_logic_op
00:00:02.184801 OpenGL Info:   GL_NV_fog_distance
00:00:02.184807 OpenGL Info:   GL_NV_fragment_program
00:00:02.184813 OpenGL Info:   GL_NV_fragment_program_option
00:00:02.184820 OpenGL Info:   GL_NV_fragment_program2
00:00:02.184826 OpenGL Info:   GL_NV_register_combiners
00:00:02.184832 OpenGL Info:   GL_NV_register_combiners2
00:00:02.184854 OpenGL Info:   GL_NV_vertex_program
00:00:02.184860 OpenGL Info:   GL_NV_vertex_program1_1
00:00:02.184866 OpenGL Info:   GL_NV_vertex_program2
00:00:02.184872 OpenGL Info:   GL_NV_vertex_program2_option
00:00:02.184878 OpenGL Info:   GL_NV_vertex_program3
00:00:02.184918 OpenGL Info:   GL_GREMEDY_string_marker
00:00:02.186491 OpenGL Info: Render SPU: GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB=16384
00:00:02.186499 OpenGL Info: Host supports version 3.0 [3.0 Mesa 18.0.5]
00:00:02.186501 OpenGL Info: Cfg: u32Caps(0x1f), fVisualBitsDefault(0x23)
Does it mean that even thought it recognises the integrated graphic card, such a graphic card doesn't support what virtualbox needs to make hardware-acceleration work in the guest OS?

Complete log-file in attachment.

Thank you in advance.
Attachments
Virtualbox_log_hwaccel_issue.txt
Log file
(113.46 KiB) Downloaded 18 times
Last edited by socratis on 9. Aug 2018, 15:59, edited 1 time in total.
Reason: Enclosed the information in [quote] tag for better readability
socratis
Site Moderator
Posts: 27329
Joined: 22. Oct 2010, 11:03
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Win(*>98), Linux*, OSX>10.5
Location: Greece

Re: Hardware-accel not working with Intel i7 6700HQ

Post by socratis »

FranceBB wrote:even thought it recognises the integrated graphic card, such a graphic card doesn't support what virtualbox needs to make hardware-acceleration work in the guest OS?
Not necessarily. All GPUs have several extensions that are not supported, that's not necessarily a bad thing. Here's mine for comparison:

Code: Select all

00:00:01.817421 OpenGL Info: Render SPU: GL_VENDOR:   ATI Technologies Inc.
00:00:01.817430 OpenGL Info: Render SPU: GL_RENDERER: AMD Radeon R9 M370X OpenGL Engine
00:00:01.817436 OpenGL Info: Render SPU: GL_VERSION:  2.1 ATI-1.42.15
00:00:01.817446 OpenGL Info: Render SPU: GL_EXTENSIONS: GL_ARB_color_buffer_float GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_vertex_array_bgra GL_ARB_vertex_blend GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_APPLE_aux_depth_stencil GL_APPLE_client_storage GL_APPLE_element_array GL_APPLE_fence GL_APPLE_float_pixels GL_APPLE_flush_buffer_range GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_packed_pixels GL_APPLE_pixel_buffer GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_specular_vector GL_APPLE_texture_range GL_APPLE_transform_hint GL_APPLE_vertex_array_object GL_APPLE_vertex_array_range GL_APPLE_vertex_point_size GL_APPLE_vertex_program_evaluators GL_APPLE_ycbcr_422 GL_ATI_blend_equation_separate GL_ATI_blend_weighted_minmax GL_ATI_separate_stencil GL_ATI_texture_compression_3dc GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_NV_blend_square GL_NV_conditional_render GL_NV_depth_clamp GL_NV_fog_distance GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_barrier GL_SGI_color_matrix GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod 
00:00:01.817483 OpenGL Info: Host does not support OpenGL extension(s):
00:00:01.817488 OpenGL Info:   GL_EXT_compiled_vertex_array
00:00:01.817508 OpenGL Info:   GL_EXT_texture_env_combine
00:00:01.817535 OpenGL Info:   GL_EXT_texture_env_dot3
00:00:01.817549 OpenGL Info:   GL_IBM_texture_mirrored_repeat
00:00:01.817580 OpenGL Info:   GL_EXT_blend_logic_op
00:00:01.817610 OpenGL Info:   GL_EXT_texture_cube_map
00:00:01.817621 OpenGL Info:   GL_EXT_texture_edge_clamp
00:00:01.817633 OpenGL Info:   GL_EXT_texture_object
00:00:01.817642 OpenGL Info:   GL_EXT_texture3D
00:00:01.817663 OpenGL Info:   GL_NV_fragment_program
00:00:01.817673 OpenGL Info:   GL_NV_fragment_program_option
00:00:01.817682 OpenGL Info:   GL_NV_fragment_program2
00:00:01.817691 OpenGL Info:   GL_NV_register_combiners
00:00:01.817699 OpenGL Info:   GL_NV_register_combiners2
00:00:01.817713 OpenGL Info:   GL_NV_texture_rectangle
00:00:01.817726 OpenGL Info:   GL_NV_vertex_program
00:00:01.817737 OpenGL Info:   GL_NV_vertex_program1_1
00:00:01.817745 OpenGL Info:   GL_NV_vertex_program2
00:00:01.817754 OpenGL Info:   GL_NV_vertex_program2_option
00:00:01.817762 OpenGL Info:   GL_NV_vertex_program3
00:00:01.817774 OpenGL Info:   GL_SGIS_texture_border_clamp
00:00:01.817800 OpenGL Info:   GL_GREMEDY_string_marker
00:00:01.822534 OpenGL Info: Render SPU: GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB=4096
00:00:01.822561 OpenGL Info: Host supports version 2.1 [2.1 ATI-1.42.15]
00:00:01.822568 OpenGL Info: Cfg: u32Caps(0x1f), fVisualBitsDefault(0x23)
00:00:01.822972 Shared OpenGL service loaded -- 3D enabled
The problem is that you have an Intel GPU, which is not the best GPU in the market. To be blunt, it's a pretty basic with tendencies for the "bad GPU" kind.
00:00:02.190261 RamSize <integer> = 0x0000000196400000 (6 815 744 000, 6 500 MB, 6.3 GB)
That's a waste of RAM allocation there. The max a WinXP guest can ever see is around 3.5 GB of RAM. And you don't even need that much. It's WinXP we're talking about. Less than 1 GB is more than enough.
00:00:02.516239 CPUM: Physical host cores: 4
00:00:02.190258 NumCPUs <integer> = 0x0000000000000004 (4)
You have assigned all your CPUs to the VM. The host is going to run low on resources, since VirtualBox cares about physical processors (cores), not logical ones (threads). See "CPU Cores versus threads" and "Why is it a bad idea to allocate as many VCPUs as there are physical CPUs?".

But back to your original problem, it's clearly an issue with the Intel GPU. Just because a GPU claims that a specific extension is supported, doesn't mean that it's supported well and bug-free. I would try to get the NVidia card working properly again.


PS. For future reference, you should completely shut down the VM before grabbing the VBox.log. Then ZIP it before attaching it to your response (see the "Upload attachment" tab below the reply form). It helps save a (virtual) tree or two...
Do NOT send me Personal Messages (PMs) for troubleshooting, they are simply deleted.
Do NOT reply with the "QUOTE" button, please use the "POST REPLY", at the bottom of the form.
If you obfuscate any information requested, I will obfuscate my response. These are virtual UUIDs, not real ones.
FranceBB
Posts: 117
Joined: 20. May 2017, 05:07
Primary OS: Fedora other
VBox Version: OSE Fedora
Guest OSses: Windows XP x86
Contact:

Re: Hardware-accel not working with Intel i7 6700HQ

Post by FranceBB »

That's a waste of RAM allocation there. The max a WinXP guest can ever see is around 3.5 GB of RAM.
Nope.
32bit OS are able to see up to 64GB of RAM with PAE activated, but are not able to allocate more than 2GB of RAM per process due to 32bit limitation.
When it was first introduced, PAE was unlocked for every version of Windows, including XP. With PAE the page frame number field was expanded from 20 to 24 bits. The size of the "byte offset" from the address being translated is still 12 bits, though, so the total physical address size increases from 32 bits to 36 bits, from 20+12 to 24+12. This increased the physical memory addressable by the CPU from 4 GB to 64 GB and the OS programs still work at 32bit thanks to the HAL (hardware abstraction layer). Unfortunately, though, many manufacturers didn't officially support PAE for their home tier products and this led to many incompatibilities with the normal 32bit drivers, especially with system with a large amount of RAM, so Microsoft decided to artificially limit PAE to ~3.5 GB to prevent these issues in some version of Windows, leaving other version unlocked, like Windows Server.
In other words, some version are limited by default and some other are not.
My version of Windows XP Professional is unlocked.

I have 16GB (8x2) DDR4 of RAM, so I assigned 6.5 GB to Windows XP and it actually sees it.
And, by the way, I use XP to make Karhunen-Loeve transform calculations and motion-vectors calculations mostly, so I actually need the RAM I assigned.

Image: https://i.imgur.com/pDutupE.png

Full Size Desktop + Task Manager: https://i.imgur.com/6xWukCi.png
you have assigned all your CPUs to the VM. The host is going to run low on resources, since VirtualBox cares about physical processors (cores), not logical ones (threads)
I did not.
I assigned 4core to the Virtual Machine. My CPU has 4core / 8threads, so I can safely assign all 4 cores as long as I don't assign threads.
I'm well aware that VirtualBox uses cores only and that timing would be terrible if I add threads (and the GUI would give a warning as well)
My configuration is perfectly legit.
For future reference, you should completely shut down the VM before grabbing the VBox.log. Then ZIP it before attaching it to your response (see the "Upload attachment" tab below the reply form). It helps save a (virtual) tree or two...
Oh, I didn't know that, I apologise.
it's clearly an issue with the Intel GPU. Just because a GPU claims that a specific extension is supported, doesn't mean that it's supported well and bug-free. I would try to get the NVidia card working properly again.
I see...
Well, I guess I'll have to wait 'till NVIDIA makes a new official release of their drivers that is compatible with the new kernel.
Thank you anyway. ^_^
Post Reply