PDA

View Full Version : AIGLX with direct rendering?


pm_64
10-29-2007, 11:36 AM
Hi

running glxinfo i noticed that 'GLX_EXT_texture_from_pixmap' is listed under 'server glx extensions' and 'client glx extensions' but not under 'GLX extensions'. Starting up compiz i get warnings:
GLX_EXT_texture_from_pixmap is not available with direct rendering.
GLX_EXT_texture_from_pixmap is available with indirect rendering.
So there is no hardware acceleration provided by the driver and everything is done by the cpu. Especially scrolling is painfully slow that way. I had neither high cpu load nor these slow desktop effects with XGL. If I try to force compiz not to use indirect rendering it crashes complaining about the lack of the 'GLX_EXT_texture_from_pixmap' extension.

Will this be fixed in 8.43? Or did i do anything wrong? Did anyone get compiz&AIGLX working with direct rendering?

Thanks

compiz: 0.5.2-2
xserver-xorg: 1:7.2-5
os: debian lenny
fglrx: 8.42.3-1
card: ati radeon X1300

name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: Radeon X1300 / X1550 Series
OpenGL version string: 2.0.6958 Release
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
GL_ARB_fragment_shader, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_shader_objects, GL_ARB_shading_language_100, GL_ARB_shadow,
GL_ARB_shadow_ambient, 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_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, 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_ATI_draw_buffers, GL_ATI_envmap_bumpmap,
GL_ATI_fragment_shader, GL_ATI_meminfo, GL_ATI_separate_stencil,
GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3,
GL_ATI_texture_float, 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_copy_texture,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_object,
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_point_parameters, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texgen_reflection, GL_EXT_texture3D,
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_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_vertex_array,
GL_KTX_buffer_region, GL_NV_blend_square, GL_NV_texgen_reflection,
GL_SGIS_generate_mipmap, GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod,
GL_WIN_swap_hint, WGL_EXT_swap_control

Karel
10-29-2007, 12:39 PM
Hi

running glxinfo i noticed that 'GLX_EXT_texture_from_pixmap' is listed under 'server glx extensions' and 'client glx extensions' but not under 'GLX extensions'. Starting up compiz i get warnings:

So there is no hardware acceleration provided by the driver and everything is done by the cpu. Especially scrolling is painfully slow that way. I had neither high cpu load nor these slow desktop effects with XGL. If I try to force compiz not to use indirect rendering it crashes complaining about the lack of the 'GLX_EXT_texture_from_pixmap' extension.

Will this be fixed in 8.43? Or did i do anything wrong? Did anyone get compiz&AIGLX working with direct rendering?

Thanks

compiz: 0.5.2-2
xserver-xorg: 1:7.2-5
os: debian lenny
fglrx: 8.42.3-1
card: ati radeon X1300

Seems like this one:
http://www.phoronix.com/forums/showthread.php?t=5972

pm_64
10-29-2007, 12:57 PM
And also similar to this one: http://www.phoronix.com/forums/showthread.php?t=6125

yes, there are many people facing the same problem. I'm quite convinced it's a driver issue. They probably couldn't implement full aiglx with direct rendering within a month so they split it up over two or more development cycles. Maybe we'll see aiglx with direct rendering support in 8.43...:rolleyes:

chikazuku
10-29-2007, 03:06 PM
AIGLX is always indirect. And indirect with AIGLX does not mean no hardware acceleration. AIGLX stands for Accelerated Indirect GLX. In other words: indirect rendering gets hardware accelerated. Also see wikipedia: http://en.wikipedia.org/wiki/AIGLX
Correct me if I'm wrong. :p

pm_64
10-29-2007, 03:53 PM
AIGLX is always indirect. And indirect with AIGLX does not mean no hardware acceleration. AIGLX stands for Accelerated Indirect GLX. In other words: indirect rendering gets hardware accelerated. Also see wikipedia: http://en.wikipedia.org/wiki/AIGLX
Correct me if I'm wrong. :p

I distinguish between indirect rendering and accelerated indirect rendering. The compiz startup script checks for direct rendering support. The check fails and then it falls back to indirect rendering and as I noted the high cpu load and the painfully slow effects I draw my conclusion that ati/amd temporarily only/mostly use the cpu without acceleration (because of their short monthly development cycle). Maybe that conclusion was wrong .. we'll see. I have worked with XGL for some time and it worked flawlessly with low cpu usage.

onestone
10-29-2007, 03:57 PM
Short explanation:

AIGLX != GLX_texture_from_pixmap (tfp)

direct rendering: The 3d application opens a window using the xserver protocol, but all opengl calls go directly to the driver and the xserver doesn't know anything about the rendering.

indirect rendering: The 3d application opens a window using the xserver protocol, and all opengl calls go to the xserver and the xserver sends them to the driver.

AIGLX (Accelerated Indirect GLX): Is simply a name for the ability of a driver to accelerate indirect rendering. (This has been supported already by nvidia for several years and has nothing to do with tfp)

AIGLX based tfp: This is what we currently get with the fglrx, intel and the free radeon drivers. This system copies the content of the window pixmap to a opengl texture. To make this work all gl calls have to go over the x protocol (AIGLX).

zero copy tfp: Instead of the slow copying of the window content into a gl texture, this allows to use the same memory area as x server drawable (pixmap) and as gl texture. There has to be a different memory management system to allow the xserver and the gl engine to share the same memory. There is already work done on a new memory manager (TTM) to allow zero copy tfp with open drivers in the future. This also allows tfp with direct rendering. This system is currently only supported by nvidia, but there are also some bugs with the nvidia memory management, known as "black window" bug.

redirected GLX: One problem that we see now with AIGLX tfp, is that other 3d applications are not redirected and paint directly on the screen. The current DRI (Direct rendering infrastructure) (fglrx is using it, but not nvidia) has no interface to render to an offscreen area (pixmap). Kristian Høgsberg is currently working on a new DRI interface to allow this. This system will only work with zero copy tfp because copying of each 3d frame would be to slow.

redirected XVideo: Nearly the same situation like for redirected GLX, but the interface is already there (XOrg 7.2). But it's a little more difficult to make to the video acceleration engines render to offscreen memory and zero copy tfp is also needed to make it work with fast enough.

pm_64
10-29-2007, 04:14 PM
So it's (above all) the memory copy overhead. Thank you for that explanation! :)

uzi-
10-29-2007, 08:46 PM
Same problem here.
please let me know if you got '
(EE) fglrx(0): Failed to enable interrupts.' in your xorg.log
perhaps it has something to do with it

pm_64
10-29-2007, 09:36 PM
Same problem here.
please let me know if you got '
(EE) fglrx(0): Failed to enable interrupts.' in your xorg.log
perhaps it has something to do with it

No, I don't get that error message. But a lot of these warnings:
(WW) AIGLX: 3D driver claims to not support visual 0x23
...
(WW) AIGLX: 3D driver claims to not support visual 0x72


Please read the postings above and here: http://www.phoronix.com/forums/showthread.php?t=5972

You'll see that the Problem lies in the implementation of AIGLX in fglrx.

yoshi314
10-30-2007, 04:49 AM
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
client glx vendor string: SGI
client glx version string: 1.4
are you using mesa for 3d? because it looks this way...

uzi-
11-05-2007, 11:00 AM
it's not mesa, you'll understand if you read all posts ;-)

I've tested the driver on a x1650, here i got very poor performance caused by high cpu-usage.
On the same system with a 9500 the speed is not optimal, but usable. Same thing on a laptop with mobile xpress 1100 .

it could be that there is a strange bug in the implementation for newer gpus

Edit: my issue is caused by the problem which is explained in this thread: http://www.phoronix.com/forums/showthread.php?t=6622