OpenGL slow on Vista64 (GeForce 130M, 1GB VRAM)

Hi,

I have recently purchased an HP notebook to support my GLSL programming. One of the first things I updated out of the box were my graphics drivers, which I downloaded from nvidia.com. After uninstalling the old video driver and installing the new video driver, I seem to be experience some problems with OpenGL. OpenGL programs run extremely slow, which is not what I’d expect from my new machine (Micrsoft Vista 64 sp1 Home Premium, Intel Core 2 Duo T6600 @ 2.2 Ghz, GeForce GT 130M 1GB VRAM, 4 GB RAM). My theory is that Vista is deferring to some software emulation of OpenGL, rather than using my hardware.

After running the OpenGL Extensions Viewer 3.0 from realtech, I noticed that it appears that the driver does not properly write some keys to the registry. I have already tried uninstalling the drivers and reinstalling them in safe mode – same result as always. The item in the report that tells me this is a driver problem is the following:

No ICD registry entry
The current OpenGL driver doesn’t expose the SOFTWARE/Microsoft/Windows (NT)/CurrentVersion/OpenGLDrivers registry entry. Unable to detect the driver version, driver revision name and filename.

Is there any way of finding out what registry keys are missing? Is there some bonehead setting I need to turn on or off in order to allow drivers to modify the registry in Vista? I am new to vista, so that could likely be the issue.

Below is the report from the OpenGL Extensions Viewer 3.0:



Renderer: GeForce GT 130M/PCI/SSE2
Vendor: NVIDIA Corporation
Memory: 1024 MB
Version: 3.0.0
Shading language version: 1.30 NVIDIA via Cg compiler

Max texture size: 8192 x 8192
Max texture coordinates: 8
Max vertex texture image units: 32
Max texture image units: 32
Max geometry texture units: 32
Max anisotropic filtering value: 16
Max number of light sources: 8
Max viewport size: 8192 x 8192
Max uniform vertex components: 4096
Max uniform fragment components: 4096
Max geometry uniform components: 2048
Max varying floats: 60
Max samples: 16
Max draw buffers: 8

Extensions: 178

GL_ARB_color_buffer_float
GL_ARB_depth_buffer_float
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_draw_instanced
GL_ARB_fragment_program
GL_ARB_fragment_program_shadow
GL_ARB_fragment_shader
GL_ARB_framebuffer_object
GL_ARB_geometry_shader4
GL_ARB_half_float_pixel
GL_ARB_half_float_vertex
GL_ARB_imaging
GL_ARB_map_buffer_range
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_shader_objects
GL_ARB_shading_language_100
GL_ARB_shadow
GL_ARB_texture_border_clamp
GL_ARB_texture_buffer_object
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
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_object
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_vertex_shader
GL_ARB_window_pos
GL_ATI_draw_buffers
GL_ATI_texture_float
GL_ATI_texture_mirror_once
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_Cg_shader
GL_EXT_compiled_vertex_array
GL_EXT_depth_bounds_test
GL_EXT_direct_state_access
GL_EXT_draw_buffers2
GL_EXT_draw_instanced
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_packed_pixels
GL_EXT_pixel_buffer_object
GL_EXT_point_parameters
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_texture3D
GL_EXT_texture_array
GL_EXT_texture_buffer_object
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_rgtc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_integer
GL_EXT_texture_lod
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_shared_exponent
GL_EXT_texture_sRGB
GL_EXT_texture_swizzle
GL_EXT_timer_query
GL_EXT_vertex_array
GL_EXT_vertex_array_bgra
GL_EXTX_framebuffer_mixed_formats
GL_IBM_rasterpos_clip
GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region
GL_NV_blend_square
GL_NV_conditional_render
GL_NV_copy_depth_to_color
GL_NV_depth_buffer_float
GL_NV_depth_clamp
GL_NV_explicit_multisample
GL_NV_fence
GL_NV_float_buffer
GL_NV_fog_distance
GL_NV_fragment_program
GL_NV_fragment_program2
GL_NV_fragment_program_option
GL_NV_framebuffer_multisample_coverage
GL_NV_geometry_shader4
GL_NV_gpu_program4
GL_NV_half_float
GL_NV_light_max_exponent
GL_NV_multisample_coverage
GL_NV_multisample_filter_hint
GL_NV_occlusion_query
GL_NV_packed_depth_stencil
GL_NV_parameter_buffer_object
GL_NV_pixel_data_range
GL_NV_point_sprite
GL_NV_primitive_restart
GL_NV_register_combiners
GL_NV_register_combiners2
GL_NV_shader_buffer_load
GL_NV_texgen_reflection
GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4
GL_NV_texture_expand_normal
GL_NV_texture_rectangle
GL_NV_texture_shader
GL_NV_texture_shader2
GL_NV_texture_shader3
GL_NV_transform_feedback
GL_NV_vertex_array_range
GL_NV_vertex_array_range2
GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_NV_vertex_program2
GL_NV_vertex_program2_option
GL_NV_vertex_program3
GL_NVX_conditional_render
GL_S3_s3tc
GL_SGIS_generate_mipmap
GL_SGIS_texture_lod
GL_SGIX_depth_texture
GL_SGIX_shadow
GL_SUN_slice_accum
GL_WIN_swap_hint
WGL_ARB_buffer_region
WGL_ARB_create_context
WGL_ARB_extensions_string
WGL_ARB_make_current_read
WGL_ARB_multisample
WGL_ARB_pbuffer
WGL_ARB_pixel_format
WGL_ARB_pixel_format_float
WGL_ARB_render_texture
WGL_ATI_pixel_format_float
WGL_EXT_extensions_string
WGL_EXT_framebuffer_sRGB
WGL_EXT_pixel_format_packed_float
WGL_EXT_swap_control
WGL_NV_float_buffer
WGL_NV_multisample_coverage
WGL_NV_render_depth_texture
WGL_NV_render_texture_rectangle

Core features
v1.1 (100 % - 7/7)
v1.2 (100 % - 8/8)
v1.3 (100 % - 9/9)
v1.4 (100 % - 15/15)
v1.5 (100 % - 3/3)
v2.0 (100 % - 10/10)
v2.1 (100 % - 3/3)
v3.0 (100 % - 21/21)
v3.1 (80 % - 4/5)

OpenGL driver version check (Current: 3.0.0, Latest known: 3.0 NVIDIA 182.47):
Latest version of display drivers found
According the database, you are running the latest display drivers for your video card.

No ICD registry entry
The current OpenGL driver doesn’t expose the SOFTWARE/Microsoft/Windows (NT)/CurrentVersion/OpenGLDrivers registry entry. Unable to detect the driver version, driver revision name and filename.

Compiled vertex array support
This feature improves OpenGL performance by using video memory to cache transformed vertices.

Multitexture support
This feature accelerates complex rendering such as lightmaps or environment mapping.

Secondary color support
This feature provides an alternate method of coloring specular highlights on polygons.

S3TC compression support
This feature improves texture mapping performance in some applications by using lossy compression.

Vertex array range support
This feature improves performance in some applications by using AGP for dynamic vertex transformation.

Texture edge clamp support
This feature improves texturing quality by adding clamping control to edge texel filtering.

Vertex program support
This feature enables a wide variety of effects via flexible vertex programming (equivalent to DX8 Vertex Shader.)

Fragment program support
This feature enables a wide variety of effects via per pixel programming (equivalent to DX9 Pixel Shader.)

Texture anisotropic filtering support
This feature improves the quality of texture mapping on oblique surfaces.

Occlusion test support
This feature provides hardware accelerated culling for objects.

Point sprite support
This feature improves performance in some particle systems.

OpenGL Shading Language support
This feature enables high level shading language for shaders.

Frame buffer object support
This feature enables render to texture functionality.

Extension verification:
GL_ARB_framebuffer_object has the entry point glFramebufferTexturLayer missing!
GL_EXT_color_subtable was not found, but has the entry point glColorSubTableEXT
GL_EXT_copy_texture was not found, but has the entry point glCopyTexSubImage3DEXT
GL_EXT_paletted_texture was not found, but has the entry point glColorTableEXT
GL_EXT_paletted_texture was not found, but has the entry point glGetColorTableEXT
GL_EXT_paletted_texture was not found, but has the entry point glGetColorTableParameterfvEXT
GL_EXT_paletted_texture was not found, but has the entry point glGetColorTableParameterivEXT
GL_EXT_provoking_vertex has been added to the extensions list of GeForce GT 130M/PCI/SSE2
GL_EXT_subtexture was not found, but has the entry point glTexSubImage3DEXT
GL_KTX_buffer_region has the entry point glBufferRegionEnabledEXT missing!
GL_KTX_buffer_region has the entry point glDeleteBufferRegionEXT missing!
GL_KTX_buffer_region has the entry point glDrawBufferRegionEXT missing!
GL_KTX_buffer_region has the entry point glNewBufferRegionEXT missing!
GL_KTX_buffer_region has the entry point glReadBufferRegionEXT missing!
GL_NV_geometry_program4 was not found, but has the entry point glProgramVertexLimitNV
GL_NV_half_float has the entry point glVertexWeighthNV missing!
GL_NV_half_float has the entry point glVertexWeighthvNV missing!
GL_NV_present_video was not found, but has the entry point glGetVideoi64vNV
GL_NV_present_video was not found, but has the entry point glGetVideoivNV
GL_NV_present_video was not found, but has the entry point glGetVideoui64vNV
GL_NV_present_video was not found, but has the entry point glGetVideouivNV
GL_NV_present_video was not found, but has the entry point glPresentFrameDualFillNV
GL_NV_present_video was not found, but has the entry point glPresentFrameKeyedNV
GL_NV_shader_buffer_load has been added to the extensions list of GeForce GT 130M/PCI/SSE2
GL_NV_vertex_buffer_unified_memory has been added to the extensions list of GeForce GT 130M/PCI/SSE2
WGL_NV_vertex_array_range was not found, but has the entry point wglAllocateMemoryNV
WGL_NV_vertex_array_range was not found, but has the entry point wglFreeMemoryNV
WGL_NV_video_output was not found, but has the entry point wglBindVideoImageNV
WGL_NV_video_output was not found, but has the entry point wglGetVideoDeviceNV
WGL_NV_video_output was not found, but has the entry point wglGetVideoInfoNV
WGL_NV_video_output was not found, but has the entry point wglReleaseVideoDeviceNV
WGL_NV_video_output was not found, but has the entry point wglReleaseVideoImageNV
WGL_NV_video_output was not found, but has the entry point wglSendPbufferToVideoNV
GL_ARB_compatibility was not found, but is available in driver version 3.0 NVIDIA 182.47
GL_EXT_copy_buffer was not found, but is available in driver version 3.0 NVIDIA 182.47
GL_NV_transform_feedback2 was not found, but is available in driver version 2.1.2

Thank you,
Alex

Did you install the driver with administrator privileges, + disabled virus scanners and such ? Maybe something prevented the driver to install properly.

Restart your machine after installation.Rest as ZbuffeR suggests.

I have tried numerous ways of installing the driver. I have restarted my computer in safe mode (so no antivirus should be running), and right clicked on the setup.exe and Run As Admininistrator. After rebooting back into normal mode I still experience this incredible slowdown with OpenGL (and the OpenGL Extensions Viewer 3.0 still outputs that OpenGL is missing registry keys).

Perhaps the missing registry keys are not the problem? Are there registry keys for non Vista machines only? Do applications targeted for 32bit systems that use OpenGL run slow because these keys are missing and the system uses a software renderer rather than a hardware renderer? Again, I’m new to Vista and 64bit architectures, so there could be something fundamental that i’m missing, although you’d think that out of the box, a driver update would just magically work.

Perhaps someone with Vista 64 Home Edition and a dedicated graphics card can verify that there is indeed a registry key entry for their graphics card in /HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows (NT)/CurrentVersion/OpenGLDrivers. I personally see the OpenGLDrivers key, but the key itself is empty and there are no subkeys. This is not the case for my Windows XP machine; I see a subkey listed under OpenGLDrivers called RIVATNT that contains 5 other keys.

To summarize, I have an OpenGL application that uses GLSL 1.3. On my Windows XP (32bit) machine (with GeForce 9600 GT, Single Core AMD 3200) this application runs at ~150 - ~180 FPS. When I rebuild this same application and run it on my new Vista64 laptop (GeForce 130M, 2.2 Ghz Core 2 Duo) it runs at ~15 FPS.

I had originally suspected that a software rendered was being used by the OS rather than my gfx card. This still could be the case; I still haven’t completely disproven that theory, although it appears that WoW runs perfectly fine in OpenGL mode (just a few fps slower than the DX version).

I’m trying to figure out why my laptop (which is the faster of the two machines) is executing my own GLSL codebase at 10% the performance of my PC. Here’s what I’m currently wondering:

  • My application is running in windowed mode. I notice that when my application is running in windowed mode, by mousing over the program in the taskbar, a thumbnail is being rendered and updated as frequently as my main program! Games like WoW don’t do this and i’m not sure why my GLSL application would be any different.

  • After some profiling in my code, it seems that after I bind the shader (gets rebound once every render loop) calls to glUniform are very slow (about 50ms for all of my glUniform calls in one tick). Is this to be expected?

Thanks,
Alex

FYI, I’ve had no trouble on Vista Home with NVIDIA. Have you tried reinstalling your drivers? Could be your laptop… (infernal laptops!) :wink:

Yes, I’ve reinstalled my drivers every which way, but no changes have been seen from this. I’m still wondering if the “No ICD registry entry” warning from the OpenGL Extensions Viewer is a bogus warning on Vista 64 bit systems.

Can anyone with Vista64 confirm that? The testing application can be found here: http://www.realtech-vr.com/glview/download.html
Perhaps Vista doesn’t need a registry key for video drivers?

Well, I seemed to have found the bigger source of my slowdown. After doing some digging I was linking my GLSL shader every frame. After the program was linking, I was making some glUniform calls, which is where the actual delay showed up in my program. My FPS are back up to about 50-80 FPS. Still not 180 FPS, but it is a heck of a lot more acceptable than 15!

Thank you all for your time in helping me debug this pesky problem.

im on vista64 with nvidia Quadro 2700M and its working fine. Which version of openGL are u testing on