Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- kmscube -V /opt/Videos/test.mp4
- (gdb) bt
- #0 0x00007f64487eaebf in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
- #1 0x0000000000409c61 in buf_to_fd (gbm=<optimized out>, ptr=0x7f64223710a0, size=1) at gst-decoder.c:363
- #2 0x0000000000409c61 in buffer_to_image (buf=0x7f643019d8e0, dec=0x1aa7ff0) at gst-decoder.c:428
- #3 0x0000000000409c61 in video_frame (dec=0x1aa7ff0) at gst-decoder.c:527
- #4 0x0000000000408b58 in draw_cube_video (i=0) at cube-video.c:234
- #5 0x0000000000408120 in legacy_run (gbm=0x571760 <gbm>, egl=0x571800 <gl>) at drm-legacy.c:76
- #6 0x0000000000404dd8 in main (argc=<optimized out>, argv=<optimized out>) at kmscube.c:162
- Digging a bit deeper:
- gbm_bo_create() fails in gst-decoder.c
- The i965 fail path is:
- intel_create_image_common ->
- isl_surf_init_s ->
- isl_calc_row_pitch ->
- Specifically this happens: !pitch_in_range(row_pitch, RENDER_SURFACE_STATE_SurfacePitch_bits(dev->info))
- An i420 1920x1080 video frame is 3110400 bytes long (1920x1080 Y plane + 2 * 1920/1080/4, for UV subsampled planes).
- The width and height passed into the isl_surf_init_info surf_into is width=3110400 and height=1.
- So the 3110400 pitch is larger than the 2^18=256K (from RENDER_SURFACE_STATE_SurfacePitch_bits == 18) maximum pitch.
- Should the bo object in gst-decoder.c be created with different dimensions? E.g. as in cube-tex.c ?
- same kmsube -V with same video file works fine on other GPUs (e.g. amdgpu).
- I am not sure if the problem is:
- - a i965 hw limitation i.e. only smaller video frames can be used as texture
- - a i965 driver issue or
- - kmscube's gst-decoder issue.
Add Comment
Please, Sign In to add comment