4tunesfool
2007-07-16, 10:14
This is probably more of a linux problem but as the only think I use Linux for at this moment is testing XBMC I thought I would try you all.
I have been running really well recently using my test rig of XP2200+, Ubuntu 7.04, 1Gb & AGP GeForce2 MX440. Although the graphics card was old and slow it worked well and I could play most standard and half-res HD without issue. The only area where it suffered was with overlays where you could have the vid source but nothing else (although you could see it trying). Music is great and the visualisations worked well.
I blagged a Nvidia FX5200 which should give me a bit more grunt (and a DVI port for my TV) so I did a complete clean install, got the source and T3CH, ran the make and now get almost no video at all (menu display and other XBMC functions are nice and snappy). On any vid source I get .3 FPS and 100% CPU. I've tried the Nvidia drivers (from Nvidia) but that way led to a would of pain. I am currently using nvidia-glx drivers from Ubuntu and the card is detected properly. X is good and desktop effects work OK.
Any ideas anout why I cannot get any better performance from what should be a much quicker card? I'm not in front of my machine at the moment but if anyone wants any logs I'll post them this evening.
Ta
Mike
4tunesfool
2007-07-17, 11:50
After a ton of research and trying various things I'm admitting defeat :-)
I've tried the nvidia-glx-new drivers which led me into a whole world of pain with terminals disappearing and patching drivers!, then back to the normal drivers with all sort of options and no improvement (going backwards really).
I've just remembered I have a Nvidia Ti 4200 installed in my XP machine so I'm going to swap that with the FX5200 and see if that one will play ball. The interesting thing was that the GUI in XBMC always worked superbly so the 3d stuff was always working, it was just the video rendering.
Great as Linux is, at times like this I really appreciate my windows boxes!
Roll on the fully packaged distribution without needing all of the X stuff....
4tunesfool
2007-07-18, 23:18
I've now installed the GeForce4 Ti 4200 and glxgears is showing over 3000fps and XBMC is back running as expected. With the new card I can now video playing in the background of the interface (although not completely smooth but that is my hardware).
As a question, what settings should I be using in the Video player section? Hardware Overlay or Software (or does it make in difference in the Linux build?)
Ta for people's suggestions.
I'm seeing the same issue. I have an nvidia geforce fx 5500 running with the proprietary nvidia drivers. I get great FPS on the XBMC UI, but playing a video is at 0.4 FPS and CPU 99%
Here is my output from glxinfo... let me know if you need any other info:
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control,
GLX_EXT_texture_from_pixmap, GLX_ARB_multisample, GLX_NV_float_buffer
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync,
GLX_NV_swap_group, GLX_NV_video_out, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGI_swap_control, GLX_NV_float_buffer, GLX_ARB_fbconfig_float,
GLX_EXT_fbconfig_packed_float, GLX_EXT_texture_from_pixmap,
GLX_EXT_framebuffer_sRGB
GLX version: 1.3
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control,
GLX_EXT_texture_from_pixmap, GLX_ARB_multisample, GLX_NV_float_buffer,
GLX_ARB_get_proc_address
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce FX 5200/AGP/SSE2
OpenGL version string: 2.1.0 NVIDIA 97.55
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_half_float_pixel, GL_ARB_imaging, 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_shadow,
GL_ARB_shader_objects, GL_ARB_shading_language_100,
GL_ARB_texture_border_clamp, 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_mirrored_repeat, GL_ARB_texture_rectangle,
GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,
GL_S3_s3tc, GL_EXT_texture_env_add, GL_EXT_abgr, GL_EXT_bgra,
GL_EXT_blend_color, GL_EXT_blend_func_separate, GL_EXT_blend_minmax,
GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, GL_EXT_Cg_shader,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object,
GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,
GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs,
GL_EXT_shared_texture_palette, GL_EXT_stencil_two_side,
GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod,
GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture_sRGB,
GL_EXT_timer_query, GL_EXT_vertex_array, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_KTX_buffer_region, GL_NV_blend_square,
GL_NV_copy_depth_to_color, GL_NV_depth_clamp, GL_NV_fence,
GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program,
GL_NV_fragment_program_option, GL_NV_framebuffer_multisample_coverage,
GL_NV_half_float, GL_NV_light_max_exponent, GL_NV_multisample_filter_hint,
GL_NV_occlusion_query, GL_NV_packed_depth_stencil, GL_NV_pixel_data_range,
GL_NV_point_sprite, GL_NV_primitive_restart, GL_NV_register_combiners,
GL_NV_register_combiners2, 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_vertex_array_range, GL_NV_vertex_array_range2, GL_NV_vertex_program,
GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_SGIS_generate_mipmap,
GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow,
GL_SUN_slice_accum
HenrikDK
2007-07-29, 22:37
Hi, I have the same problem on my laptop (Nvidia Geforce FX5300 Go, with a 2.8 Ghz Pentium 4) and have been trying to figure out whats wrong. It seems to me that the problem is caused by the FX series lack of OpenGL features.
This a small part of my laptops glewinfo output:
GL_ARB_texture_non_power_of_two: MISSING
GL_ARB_texture_rectangle: OK
This is a very annoying problem, since in this case nvidias OpenGL driver is reporting the existence of the texture rectangle extension (responsible for drawing textures where height and width are "not the power of two"), but its missing the hardware acceleration of non_power_of_two rendering. These issues are further explained in this paper:
http://download.nvidia.com/developer/Papers/2005/OpenGL_2.0/NVIDIA_OpenGL_2.0_Support.pdf
The highlights of this paper are (page 9 - 10):
1. GeForce FX and NV3xGL-based Quadro FX GPUs lack hardware support for non-power-of-two textures (excepting the texture rectangle functionality provided by the ARB_texture_rectangle extension). If any texture unit could sample a bound 1D, 2D,3D, or cube map texture object with non-power-of-two size, the driver will automatically render with software rendering, which is correct but extremely slow.
2. Unlike NVIDIA’s GeForce 6 Series and NV4xGL-based Quadro FX GPUs, GeForce FX and NV3xGL-based Quadro FX GPUs do not have hardware support for fragment-level branching.
3. GeForce FX and NV3xGL-based Quadro FX GPUs lack hardware support for separate RGB and alpha blend equations. If the RGB and alpha blend equations are different, the driver will automatically render with full software rasterization, which is correct but extremely slow.
4. NVIDIA’s GeForce FX and NV3xGL-based Quadro FX GPUs lack hardware support for vertex fetching. GLSL vertex shaders that perform vertex texture fetches will fail to compile.
and
Future driver revisions may successfully compile GLSL vertex shaders with texture fetches but perform the vertex shader completely or partially with the CPU. In this case, the GPU can still accelerate rasterization and fragment processing.
From reading the source of LinuxRendererGL, I'm not quite sure how much of this affects the current renderer, but from my own test the problem is not solved by reverting to Power of Two textures and I believe the reliance on vetrex, fragment and pixel shaders in the rendering pipeline. Since I'm not really familiar with OpenGL programming I'm currently unable to build an alternative rendering pipeline, and don't quite understand the purpose of the shader code ;)
Just thought Id share my findings with everyone else having the same problems.
Glewinfo: http://pastebin.ca/638426
GLXinfo: http://pastebin.ca/638429