Announcement

Collapse
No announcement yet.

AIGLX with direct rendering?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • AIGLX with direct rendering?

    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
    Last edited by pm_64; 29 October 2007, 11:45 AM.

  • #2
    Originally posted by pm_64 View Post
    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:

    Comment


    • #3
      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...
      Last edited by pm_64; 29 October 2007, 02:32 PM.

      Comment


      • #4
        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.

        Comment


        • #5
          Originally posted by chikazuku View Post
          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.
          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.

          Comment


          • #6
            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.

            Comment


            • #7
              So it's (above all) the memory copy overhead. Thank you for that explanation!

              Comment


              • #8
                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

                Comment


                • #9
                  Originally posted by uzi- View Post
                  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.

                  Comment


                  • #10
                    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...

                    Comment

                    Working...
                    X