[Mesa-dev] nouveau: xvmc on nv43

Pali Rohár pali.rohar at gmail.com
Fri Aug 16 02:40:30 PDT 2013


Hello Ilia,

I was your last commit which fixing xvmc support for nv30 hw in mesa git tree. 
Maybe you can help me. I have graphics card nvidia geforce 6600 gt (nv43 chip) 
According to wiki page http://nouveau.freedesktop.org/wiki/FeatureMatrix/ xvmc 
support for nv43 is already done. When I start xvmcinfo it print:

$ ./xvmcinfo 

Xv version 2.2
XvMC version 1.1

screen number 0
   info for adaptor 0 [NV40 texture adapter]
      number of XvMC surface types: 2

      info about surface 0:
         max_width=2048
         max_height=2048
         subpicture_max_width=2048
         subpicture_max_height=2048
         chroma_format:
            XVMC_CHROMA_FORMAT_420 
         mc_type:
            format                   : MPEG2
            accelaration start from  : IDCT 
         flags:
            XVMC_BACKEND_SUBPICTURE XVMC_SUBPICTURE_INDEPENDENT_SCALING 

      info about surface 1:
         max_width=2048
         max_height=2048
         subpicture_max_width=2048
         subpicture_max_height=2048
         chroma_format:
            XVMC_CHROMA_FORMAT_422 
         mc_type:
            format                   : MPEG2
            accelaration start from  : IDCT 
         flags:
            XVMC_BACKEND_SUBPICTURE XVMC_SUBPICTURE_INDEPENDENT_SCALING 

   info for adaptor 1 [NV40 high quality adapter]
      number of XvMC surface types: 0

   info for adaptor 2 [NV Video Blitter]
      number of XvMC surface types: 0

So some xvmc support is there (via nouveau xvmc library). But when I tried to 
use mpeg2play_accel testing application (or mplayer) it crash. Here is gdb 
backtrace from coredump file:

(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00007fca300cd345 in XvMCCreateContext (dpy=0xbefd00, port=63, 
surface_type_id=842094169, width=720, height=480, flags=1, context=0x60dee0)
    at context.c:248
#2  0x000000000040941f in init_display () at display.c:270
#3  0x0000000000402f0c in initdecoder () at mpeg2dec.c:211
#4  0x0000000000402b57 in main (argc=2, argv=0x7fff94c89f10) at mpeg2dec.c:121
(gdb) bt full
#0  0x0000000000000000 in ?? ()
No symbol table info available.
#1  0x00007fca300cd345 in XvMCCreateContext (dpy=0xbefd00, port=63, 
surface_type_id=842094169, width=720, height=480, flags=1, context=0x60dee0)
    at context.c:248
        found_port = true
        scrn = 0
        chroma_format = 1
        mc_type = 65538
        surface_flags = 6
        subpic_max_w = 2048
        subpic_max_h = 2048
        ret = 0
        vscreen = 0xbf13f0
        pipe = 0xc191e0
        context_priv = 0xbfead0
        csc = {{0, 0, 0, 0}, {-2.02570359e-26, 4.59163468e-41, 5.89217978e-39, 
0}, {-2.02575536e-26, 4.59163468e-41, 8.44951942e-10, 4.5842078e-41}}
#2  0x000000000040941f in init_display () at display.c:270
        surface_type_id = 842094169
        result = 0
        i = 4204800
        color = 0
        root = 652
#3  0x0000000000402f0c in initdecoder () at mpeg2dec.c:211
        i = 640
        blk_cnt_tab = {6, 8, 12}
#4  0x0000000000402b57 in main (argc=2, argv=0x7fff94c89f10) at mpeg2dec.c:121
        first = 1
        framenum = 0
        runtime = 0
        tstart = {tv_sec = 140735689563912, tv_usec = 4236512}
        tstop = {tv_sec = 0, tv_usec = 4204800}

It looks like that in mesa code is calling pipe->create_video_decoder(...) but 
create_video_decoder is NULL and then it crash.

(gdb) print *pipe
$1 = {screen = 0xbffa50, priv = 0xbf13f0, draw = 0x0, destroy = 0x7fca300d00a0 
<nv30_context_destroy>, draw_vbo = 0x7fca300da250 <nv30_draw_vbo>, 
  render_condition = 0x7fca300dd760 <nv40_query_render_condition>, 
create_query = 0x7fca300dd510 <nv30_query_create>, 
  destroy_query = 0x7fca300dd500 <nv30_query_destroy>, begin_query = 
0x7fca300dd890 <nv30_query_begin>, end_query = 0x7fca300dd670 
<nv30_query_end>, 
  get_query_result = 0x7fca300dd410 <nv30_query_result>, create_blend_state = 
0x7fca300d47f0 <nv30_blend_state_create>, 
  bind_blend_state = 0x7fca300d3da0 <nv30_blend_state_bind>, 
delete_blend_state = 0x7fca300d4160 <nv30_blend_state_delete>, 
  create_sampler_state = 0x7fca300d69f0 <nv30_sampler_state_create>, 
bind_fragment_sampler_states = 0x7fca300d72a0 
<nv30_fragtex_sampler_states_bind>, 
  bind_vertex_sampler_states = 0x7fca300d79a0 
<nv40_verttex_sampler_states_bind>, bind_geometry_sampler_states = 0, 
bind_compute_sampler_states = 0, 
  delete_sampler_state = 0x7fca300d69e0 <nv30_sampler_state_delete>, 
create_rasterizer_state = 0x7fca300d44a0 <nv30_rasterizer_state_create>, 
  bind_rasterizer_state = 0x7fca300d3db0 <nv30_rasterizer_state_bind>, 
delete_rasterizer_state = 0x7fca300d4150 <nv30_rasterizer_state_delete>, 
  create_depth_stencil_alpha_state = 0x7fca300d4170 <nv30_zsa_state_create>, 
bind_depth_stencil_alpha_state = 0x7fca300d3dc0 <nv30_zsa_state_bind>, 
  delete_depth_stencil_alpha_state = 0x7fca300d4140 <nv30_zsa_state_delete>, 
create_fs_state = 0x7fca300d7cb0 <nv30_fp_state_create>, 
  bind_fs_state = 0x7fca300d7c40 <nv30_fp_state_bind>, delete_fs_state = 
0x7fca300d7c50 <nv30_fp_state_delete>, 
  create_vs_state = 0x7fca300d8240 <nv30_vp_state_create>, bind_vs_state = 
0x7fca300d8230 <nv30_vp_state_bind>, 
  delete_vs_state = 0x7fca300d8360 <nv30_vp_state_delete>, create_gs_state = 
0, bind_gs_state = 0, delete_gs_state = 0, 
  create_vertex_elements_state = 0x7fca300d9d90 <nv30_vertex_state_create>, 
bind_vertex_elements_state = 0x7fca300d9d40 <nv30_vertex_state_bind>, 
  delete_vertex_elements_state = 0x7fca300d9d60 <nv30_vertex_state_delete>, 
set_blend_color = 0x7fca300d3dd0 <nv30_set_blend_color>, 
  set_stencil_ref = 0x7fca300d3df0 <nv30_set_stencil_ref>, set_sample_mask = 
0x7fca300d3e10 <nv30_set_sample_mask>, 
  set_clip_state = 0x7fca300d4080 <nv30_set_clip_state>, set_constant_buffer = 
0x7fca300d4c30 <nv30_set_constant_buffer>, 
  set_framebuffer_state = 0x7fca300d3f50 <nv30_set_framebuffer_state>, 
set_polygon_stipple = 0x7fca300d3e30 <nv30_set_polygon_stipple>, 
  set_scissor_states = 0x7fca300d3ef0 <nv30_set_scissor_states>, 
set_viewport_states = 0x7fca300d3f10 <nv30_set_viewport_states>, 
  set_fragment_sampler_views = 0x7fca300d7330 
<nv30_fragtex_set_sampler_views>, 
  set_vertex_sampler_views = 0x7fca300d7a30 <nv40_verttex_set_sampler_views>, 
set_geometry_sampler_views = 0, set_compute_sampler_views = 0, 
  set_shader_resources = 0, set_vertex_buffers = 0x7fca300d4000 
<nv30_set_vertex_buffers>, set_index_buffer = 0x7fca300d4dc0 
<nv30_set_index_buffer>, 
  create_stream_output_target = 0, stream_output_target_destroy = 0, 
set_stream_output_targets = 0, 
  resource_copy_region = 0x7fca300d2e30 <nv30_resource_copy_region>, blit = 
0x7fca300d3370 <nv30_blit>, clear = 0x7fca300d8be0 <nv30_clear>, 
  clear_render_target = 0x7fca300d95c0 <nv30_clear_render_target>, 
clear_depth_stencil = 0x7fca300d91b0 <nv30_clear_depth_stencil>, 
  flush = 0x7fca300d0130 <nv30_context_flush>, create_sampler_view = 
0x7fca300d6ec0 <nv30_sampler_view_create>, 
  sampler_view_destroy = 0x7fca300d7220 <nv30_sampler_view_destroy>, 
create_surface = 0x7fca300d3be0 <nv30_miptree_surface_new>, 
  surface_destroy = 0x7fca300d3d60 <nv30_miptree_surface_del>, transfer_map = 
0x7fca30031040 <u_transfer_map_vtbl>, 
  transfer_flush_region = 0x7fca30031050 <u_transfer_flush_region_vtbl>, 
transfer_unmap = 0x7fca30031060 <u_transfer_unmap_vtbl>, 
  transfer_inline_write = 0x7fca30031070 <u_transfer_inline_write_vtbl>, 
texture_barrier = 0, create_video_decoder = 0, create_video_buffer = 0, 
  create_compute_state = 0, bind_compute_state = 0, delete_compute_state = 0, 
set_compute_resources = 0, set_global_binding = 0, launch_grid = 0, 
  get_sample_position = 0}

Can you look at this xvmc problem? At least mesa should not crash if there is 
problem or unsupported hardware.

If you need some more debug info (or full coredump file) I can send it.

-- 
Pali Rohár
pali.rohar at gmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130816/0458a640/attachment-0001.pgp>


More information about the mesa-dev mailing list