Announcement

Collapse
No announcement yet.

AMD Releases UVD Video Decode Support For R600 GPUs

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

  • Mesa 10.4.0-devel still advertises GL_NV_vdpau_interop for RV790

    Originally posted by agd5f View Post
    I just tested it on my rv770 and it works fine, but only if you apply this mesa patch:
    http://cgit.freedesktop.org/mesa/mes...1d4e227a9eb3d8
    The corruption you are seeing is due to the lack of field based decode.
    I have compiled the very latest Mesa from git for my HD4890, and have copied the libvdpau_r600.so.1.0.0 object into my /usr/lib64/vdpau directory. When I repeat the "mpv" test now, I get successful playback with "--hwdec=vdpau --vo=vdpau", and a core dump with "--hwdec=vdpau --vo=opengl".

    I also notice that glxinfo is advertising the GL_NV_vdpau_interop extension:
    Code:
    name of display: :0
    display: :0  screen: 0
    direct rendering: Yes
    server glx vendor string: SGI
    server glx version string: 1.4
    server glx extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_multisample, GLX_EXT_create_context_es2_profile, 
        GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
        GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
        GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
    client glx vendor string: Mesa Project and SGI
    client glx version string: 1.4
    client glx extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
        GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
        GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, 
        GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
        GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
        GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
        GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
        GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
        GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
        GLX_SGI_swap_control, GLX_SGI_video_sync
    GLX version: 1.4
    GLX extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_get_proc_address, GLX_ARB_multisample, 
        GLX_EXT_create_context_es2_profile, GLX_EXT_import_context, 
        GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
        GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
        GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
        GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
        GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
        GLX_SGI_swap_control, GLX_SGI_video_sync
    OpenGL vendor string: X.Org
    OpenGL renderer string: Gallium 0.4 on AMD RV770
    OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.4.0-devel (git-6b48c18)
    OpenGL core profile shading language version string: 3.30
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    OpenGL core profile extensions:
        GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
        GL_AMD_shader_stencil_export, GL_AMD_shader_trinary_minmax, 
        GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
        GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, GL_ARB_base_instance, 
        GL_ARB_blend_func_extended, GL_ARB_buffer_storage, 
        GL_ARB_clear_buffer_object, GL_ARB_compressed_texture_pixel_storage, 
        GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output, 
        GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_draw_buffers, 
        GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
        GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location, 
        GL_ARB_explicit_uniform_location, GL_ARB_fragment_coord_conventions, 
        GL_ARB_fragment_layer_viewport, GL_ARB_fragment_shader, 
        GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
        GL_ARB_get_program_binary, GL_ARB_half_float_pixel, 
        GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
        GL_ARB_internalformat_query, GL_ARB_invalidate_subdata, 
        GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind, 
        GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, 
        GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
        GL_ARB_seamless_cube_map, GL_ARB_separate_shader_objects, 
        GL_ARB_shader_bit_encoding, GL_ARB_shader_objects, 
        GL_ARB_shader_stencil_export, GL_ARB_shader_texture_lod, 
        GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, 
        GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_texture_barrier, 
        GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32, 
        GL_ARB_texture_buffer_range, GL_ARB_texture_compression_rgtc, 
        GL_ARB_texture_float, GL_ARB_texture_mirror_clamp_to_edge, 
        GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
        GL_ARB_texture_query_levels, GL_ARB_texture_rectangle, GL_ARB_texture_rg, 
        GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, 
        GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
        GL_ARB_timer_query, GL_ARB_transform_feedback2, 
        GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
        GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
        GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding, 
        GL_ARB_vertex_shader, GL_ARB_vertex_type_10f_11f_11f_rev, 
        GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_viewport_array, 
        GL_ATI_blend_equation_separate, GL_ATI_texture_compression_3dc, 
        GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr, 
        GL_EXT_blend_equation_separate, GL_EXT_draw_buffers2, 
        GL_EXT_draw_instanced, GL_EXT_framebuffer_blit, 
        GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
        GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, 
        GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex, 
        GL_EXT_shader_integer_mix, GL_EXT_texture_array, 
        GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc, 
        GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc, 
        GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
        GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB, 
        GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, 
        GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, 
        GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra, 
        GL_IBM_multimode_draw_arrays, GL_KHR_debug, GL_MESA_pack_invert, 
        GL_MESA_texture_signed_rgba, GL_NV_conditional_render, GL_NV_depth_clamp, 
        GL_NV_packed_depth_stencil, GL_NV_texture_barrier, GL_NV_vdpau_interop, 
        GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc
    
    OpenGL version string: 3.0 Mesa 10.4.0-devel (git-6b48c18)
    OpenGL shading language version string: 1.30
    OpenGL context flags: (none)
    OpenGL extensions:
        GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
        ...
    I can't claim to understand exactly what is supposed to be happening here, but isn't the current implementation of GL_NV_vdpau_interop dependent on field-based output? And therefore broken for <= RV770?

    Comment


    • Let confusion reign!

      Originally posted by chrisr View Post
      I have compiled the very latest Mesa from git for my HD4890, and have copied the libvdpau_r600.so.1.0.0 object into my /usr/lib64/vdpau directory. When I repeat the "mpv" test now, I get successful playback with "--hwdec=vdpau --vo=vdpau", and a core dump with "--hwdec=vdpau --vo=opengl".
      The core dump is possibly due to a mismatch between Mesa 10.4-devel's libvdpau_r600.so and Mesa 10.1.5's libGL.so.1.2, because "--hwdec=vdpau --vo=opengl" seems to behave itself with a suitable value for LD_LIBRARY_PATH.

      So the bottom line is that I can no longer parse a shred of meaning from this original statement:
      A small Mesa patch is needed as well, cause the older hardware doesn't support field based output of video frames. So unfortunately VDPAU/OpenGL interop won't work either.
      Yes, a small Mesa patch is needed, but it seems that "--vo=opengl" (and hence VDPAU/OpenGL interop) can still work just fine without field-based output of video frames!? And hence Mesa can safely advertise the GL_NV_vdpau_interop extension for my RV790.

      Comment


      • Originally posted by arboy84 View Post
        Thank you to the team at AMD for continuing to support my laptop.
        I love how involved they are with the community as well!

        Comment


        • Could the Mesa patches be back-patched into 10.2 / 10.3 please?

          The Mesa patches for UVD video are trivial, and look like they could easily be applied to the 10.2 and 10.3 branches too. I think that it would be "handy" if userspace were ready for this new UVD support before the 3.18 kernel is likely to start reaching users... .

          And Fedora 21 looks like it will be using Mesa 10.3.

          Comment


          • RV550

            Just out of curiosity. Is there any support for the RV550 (Mobility Radeon HD 2300) and is it the same UVD version as the RV610/RV630?

            Comment


            • Originally posted by Kamerat View Post
              Just out of curiosity. Is there any support for the RV550 (Mobility Radeon HD 2300) and is it the same UVD version as the RV610/RV630?
              It should be supported i think because devs says now all chips which has UVD unit are supported .

              According to wikipedia there was two mobility RV515: X2300 does not have UVD unit, but HD2300 has:

              http://en.wikipedia.org/wiki/List_of...HD_2xxx_Series

              Comment


              • Originally posted by dungeon View Post
                It should be supported i think because devs says now all chips which has UVD unit are supported .
                But OK it is good question, you seems to found one r300 which has UVD that is interesting .

                Comment


                • Originally posted by dungeon View Post
                  It should be supported i think because devs says now all chips which has UVD unit are supported .
                  Well that's the point where the only best effort starts

                  The first problem is that in theory the released code should work on the very few R5xx boards that have UVD as well, but nobody ever tried it. Because of this we haven't activated the UVD block on this hardware. If somebody got the hardware in question a simple kernel patch should be enough to activate it.

                  The second problem is that the userspace code currently doesn't work together with the R300 driver. Should be trivial as well to hack that together, but again nobody ever tried.

                  Comment


                  • Originally posted by chrisr View Post
                    I also notice that glxinfo is advertising the GL_NV_vdpau_interop extension:
                    Ah! Thanks for the notification, that's just a bug. Going to provide a mesa patch.

                    Originally posted by chrisr View Post
                    I can't claim to understand exactly what is supposed to be happening here, but isn't the current implementation of GL_NV_vdpau_interop dependent on field-based output? And therefore broken for <= RV770?
                    The field based output is needed to correctly display the picture after decoding. E.g. you will still see the image, but it would be stretched and every second line will come from the wrong offset.

                    Comment


                    • Originally posted by Deathsimple View Post
                      Well that's the point where the only best effort starts
                      As long as UVD is there hope never dies .

                      If someone has r300 laptop with rare UVD, just sent it to this guy

                      Comment

                      Working...
                      X