VirtualBox

Opened 12 years ago

Last modified 10 years ago

#10190 new defect

MS Flight beta report "no Shader 3 support" and close

Reported by: Valerio Messina Owned by:
Component: 3D support Version: VirtualBox 4.1.8
Keywords: Cc:
Guest type: Windows Host type: Linux

Description

I tried to install the new MS Flight beta on WinXP in VB4.1.8 I keep 3D acceleration activated with 128 MB dedicated to VideoRAM. My Host is Linux Ubuntu 11.10, and the card is a NVidia G104M The installation work, but on Flight start it detect "no Shader 3 support" and close.

Attachments (3)

VBox.log (87.5 KB ) - added by Valerio Messina 12 years ago.
VB4.1.8_WinXP_Flight.jpg (234.0 KB ) - added by Valerio Messina 12 years ago.
error dialog box
VBox.log.1 (121.7 KB ) - added by linuxloon 11 years ago.
VB log file

Download all attachments as: .zip

Change History (15)

comment:1 by misha, 12 years ago

Please attach a VM session log here. The Shader 3 is supported in case it can be implemented by means of host's opengl capabilities the host graphics provides.

comment:2 by Valerio Messina, 12 years ago

can you please explain me how to recover the VM session log?

comment:3 by misha, 12 years ago

It's in the Logs directory of your VM directory, which is ~/VirtualBox VMs/<vm_name> by default.

by Valerio Messina, 12 years ago

Attachment: VBox.log added

by Valerio Messina, 12 years ago

Attachment: VB4.1.8_WinXP_Flight.jpg added

error dialog box

comment:4 by Valerio Messina, 12 years ago

I just started the VM, started Flight, shutdown VM

comment:5 by Valerio Messina, 12 years ago

opss, my video card is a NVidia Geforce G102M (not G104M) with 512 MB videoram and should support Shader 3 model:
http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units#GeForce_100_Series
http://en.wikipedia.org/wiki/GeForce_100_Series

comment:6 by Turin, 12 years ago

I'm getting a similar error regarding SM3, I think it may be related to the use of GL_ARB_shader_texture_lod versus GL_EXT_gpu_shader4 in glsl_shader.c

Looking at the code, it appears that either of these functions can be used, however in my testing systems that support GL_EXT_gpu_shader4 (but not GL_ARB_shader_texture_lod) generate the SM3 error when trying to launch a game that requires SM3 support.

From the "NVIDIA 280.13" in your log file I'm guessing you may have the same issue. I don't have VirtualBox OSE building yet locally to try recompiling the guest addons (my current suspision is that building locally will generate the correct binaries for my graphics drivers which support EXT_gpu_shader4) so I can't say for sure that this is the problem though.

comment:7 by Turin, 12 years ago

I've been able to track down the problem to a lack of pass-through on OpenGL extensions used by wind3d. Using http://www.realtech-vr.com/glview/ in my windows guest I was able to determine that both the NV_FRAGMENT_PROGRAM2 and NV_VERTEX_PROGRAM3 extensions were not supported in the guest despite being present on the host. These extensions are used by wine to determine whether nvidia cards support Shader Model 3, and when it cannot detect these extensions in the guest, wined3d downgrades the capabilities it reports out to shader model 2.

I was able to get around this by commenting out the checks for these extensions in the wined3d files of the OSE, and rebuilding/reinstalling the win.x86 guest additions, however there do appear to be some compatability and performance issues with this (unsurprisingly). In addition to the 2 extensions listed above, there are numerous other extensions used by wined3d (in src\VBox\Additions\WINNT\Graphics\Wine\wined3d\directx.c) that are also not passed through to the guest, although I don’t know for sure what or if anything else is being broken by this.

src\VBox\Additions\WINNT\Graphics\Wine\wined3d\glsl_shader.c:
    if (/*(gl_info->supported[NV_FRAGMENT_PROGRAM] && !gl_info->supported[NV_FRAGMENT_PROGRAM2])
            ||*/ gl_info->limits.arb_ps_instructions <= 512)
        pCaps->PixelShaderVersion = WINED3DPS_VERSION(2,0);
    else
        pCaps->PixelShaderVersion = WINED3DPS_VERSION(3,0);

…

    if (/*(gl_info->supported[NV_VERTEX_PROGRAM2] && !gl_info->supported[NV_VERTEX_PROGRAM3])
            ||*/ gl_info->limits.arb_ps_instructions <= 512)
        pCaps->VertexShaderVersion = WINED3DVS_VERSION(2,0);
    else
        pCaps->VertexShaderVersion = WINED3DVS_VERSION(3,0);
src\VBox\Additions\WINNT\Graphics\Wine\wined3d\arb_program_shader.c
        /*if (gl_info->supported[NV_FRAGMENT_PROGRAM2])
        {
            pCaps->PixelShaderVersion    = WINED3DPS_VERSION(3,0);
            TRACE_(d3d_caps)("Hardware pixel shader version 3.0 enabled (NV_FRAGMENT_PROGRAM2)\n");
        }
        Else*/ if (ps_consts >= 32)
        {
            /* Shader Model 2.0 requires at least 32 pixel shader constants */
            pCaps->PixelShaderVersion    = WINED3DPS_VERSION(3,0);
            TRACE_(d3d_caps)("Hardware pixel shader version 2.0 enabled (ARB_PROGRAM)\n");
        }

…

        /*if (gl_info->supported[NV_VERTEX_PROGRAM3])
        {
            pCaps->VertexShaderVersion = WINED3DVS_VERSION(3,0);
            TRACE_(d3d_caps)("Hardware vertex shader version 3.0 enabled (NV_VERTEX_PROGRAM3)\n");
        }
        Else*/ if (vs_consts >= 256)
        {
            /* Shader Model 2.0 requires at least 256 vertex shader constants */
            pCaps->VertexShaderVersion = WINED3DVS_VERSION(3,0);
            TRACE_(d3d_caps)("Hardware vertex shader version 2.0 enabled (ARB_PROGRAM)\n");
        }

comment:8 by misha, 12 years ago

Thanks for your research and for the info. We will check if we can easily add support for NV_*_PROGRAM easily.

by linuxloon, 11 years ago

Attachment: VBox.log.1 added

VB log file

comment:9 by linuxloon, 11 years ago

VB 4.2.4 , kernel 3.6.5-2 Host is fedora 16 VM is win7 message in messages is

kernel: [ 989.349111] ShCrOpenGL[15247]: segfault at b460020 ip 0000000041946e31 sp 00007fa86bbac4e8 error 4 in glo9wvHd (deleted)[41945000+2000]

attached the VB log file

comment:10 by efferre, 10 years ago

Which is the status for this bug? I still se shader level 2.0 supported with latest VirtualBox 4.3.2 and Guest Additions 4.3.2 r90405

comment:11 by Valerio Messina, 10 years ago

MS Flight was a total selling failure, anyway about every recent game will use a Shader level >2, so I think must be fixed

comment:12 by msteele, 10 years ago

Is there any progress on SM3 support? I'd like to ditch Parallels and Fusion in favor of VirtualBox for our Macs, but this limitation is a deal killer.

Thank you for your ongoing support of this great product.

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use