Announcement

Collapse
No announcement yet.

Major AMD Catalyst Linux Update Expected Next Week

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

  • #61
    Good, then I know where it crashes,

    add here: https://github.com/xbmc/xbmc/blob/ma...AAPI.cpp#L2981

    Code:
    if (use_filter)
      CheckSuccess(vaDestroyImage(config.dpy,image.image_id));
    Funny .. the driver crashes when we want to delete an ID we did not create. If MAD is reading this -> needs fixing in the driver.

    Edit: Btw. the above output tells us, that you did not correctly add the "if (use_filter && (... || ...)" cause it should have never printed: 12:45:28 T:140040617527040 WARNING: VAAPI::SupportsFilter patches no multiple of 64

    Please post your diff after editing VAAPI.cpp to be sure.
    Last edited by fritsch; 09 December 2014, 08:15 AM.

    Comment


    • #62
      You can pick the complete PR here, I added the missing code: https://github.com/xbmc/xbmc/pull/5909 so https://github.com/xbmc/xbmc/pull/5909.patch that will apply on a clean master.

      Comment


      • #63
        Originally posted by fritsch View Post
        Edit: Btw. the above output tells us, that you did not correctly add the "if (use_filter && (... || ...)" cause it should have never printed: 12:45:28 T:140040617527040 WARNING: VAAPI::SupportsFilter patches no multiple of 64
        Code:
        diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
        index 8ef0a22..9f46f39 100644
        --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
        +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
        @@ -2973,11 +2973,12 @@ bool CFFmpegPostproc::PreInit(CVaapiConfig &config, SDiMethods *methods)
             CLog::Log(LOGWARNING,"VAAPI::SupportsFilter image format not NV12");
             use_filter = false;
           }
        -  if ((image.pitches[0] % 64) || (image.pitches[1] % 64))
        +  if (use_filter && (image.pitches[0] % 64) || (image.pitches[1] % 64))
           {
             CLog::Log(LOGWARNING,"VAAPI::SupportsFilter patches no multiple of 64");
             use_filter = false;
           }
        +if (use_filter)
           CheckSuccess(vaDestroyImage(config.dpy,image.image_id));
         
           if (use_filter)
        I clear now all and use the patch

        Comment


        • #64
          So now it start with a black screen, plays the sound and then it freeze.

          Kodi.log

          Thats the local changes

          Code:
          diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
          index 8ef0a22..a056d61 100644
          --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
          +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
          @@ -150,9 +150,12 @@ bool CVAAPIContext::CreateContext()
               CLog::Log(LOGDEBUG, "VAAPI - driver in use: %s", vaQueryVendorString(m_display));
           
             QueryCaps();
          -  if (!m_profileCount || !m_attributeCount)
          +  if (!m_profileCount)
               return false;
           
          +  if (!m_attributeCount)
          +    CLog::Log(LOGWARNING, "VAAPI - driver did not return anything from vlVaQueryDisplayAttributes");
          +
             return true;
           }
           
          @@ -2968,17 +2971,18 @@ bool CFFmpegPostproc::PreInit(CVaapiConfig &config, SDiMethods *methods)
               CLog::Log(LOGWARNING,"VAAPI::SupportsFilter vaDeriveImage not supported");
               use_filter = false;
             }
          -  if (image.format.fourcc != VA_FOURCC_NV12)
          +  if (use_filter && (image.format.fourcc != VA_FOURCC_NV12))
             {
               CLog::Log(LOGWARNING,"VAAPI::SupportsFilter image format not NV12");
               use_filter = false;
             }
          -  if ((image.pitches[0] % 64) || (image.pitches[1] % 64))
          +  if (use_filter && ((image.pitches[0] % 64) || (image.pitches[1] % 64)))
             {
               CLog::Log(LOGWARNING,"VAAPI::SupportsFilter patches no multiple of 64");
               use_filter = false;
             }
          -  CheckSuccess(vaDestroyImage(config.dpy,image.image_id));
          +  if (status == VA_STATUS_SUCCESS)
          +    CheckSuccess(vaDestroyImage(config.dpy,image.image_id));
           
             if (use_filter)
             {
          Last edited by Nille; 09 December 2014, 09:02 AM.

          Comment


          • #65
            Program received signal SIGSEGV, Segmentation fault.
            [Switching to Thread 0x7fffa0aec700 (LWP 8968)]
            0x00007fff97773add in VADestroyImage () from /usr/lib/libAMDXvBA.so.1
            Someone can still see xvba? :-) So it's another wrapper, this time shipped with the driver.

            Edit: Concerning the functionality: No idea. Try to start it in gdb and get me a thread apply all bt to see where it hangs.

            Oki, we are now at a point, I cannot do anything else without a running AMD setup. And I refuse to install fglrx.
            Last edited by fritsch; 09 December 2014, 09:15 AM.

            Comment


            • #66
              fritsch@openelec:~$ DISPLAY=:0 vainfo
              libva info: VA-API version 0.35.0
              libva info: va_getDriverName() returns 0
              libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/fglrx_drv_video.so
              libva info: Found init function __vaDriverInit_0_33
              libva info: va_openDriver() returns 0
              vainfo: VA-API version: 0.35 (libva 1.3.0)
              vainfo: Driver version: AMD MMD 1.0
              vainfo: Supported profile and entrypoints
              VAProfileMPEG2Simple : VAEntrypointVLD
              VAProfileMPEG2Main : VAEntrypointVLD
              VAProfileMPEG4Simple : VAEntrypointVLD
              VAProfileMPEG4AdvancedSimple : VAEntrypointVLD
              VAProfileMPEG4Main : VAEntrypointVLD
              VAProfileH264Baseline : VAEntrypointVLD
              VAProfileH264Main : VAEntrypointVLD
              VAProfileH264High : VAEntrypointVLD
              VAProfileVC1Simple : VAEntrypointVLD
              VAProfileVC1Main : VAEntrypointVLD
              VAProfileVC1Advanced : VAEntrypointVLD
              Mpeg2 and Mpeg4 Support. That's new.

              Comment


              • #67
                Originally posted by fritsch View Post
                Mpeg2 and Mpeg4 Support. That's new.
                Can confirm I also have MPEG2 and MPEG4 support in addition to H264 and VC1 with my Radeon R9 285.

                Comment


                • #68
                  If they could now make it threadsafe,

                  e.g. securing their internal:

                  g_XVBA_vtable.CreateDecodeBuffers vs. g_XVBA_vtable.StartDecodePicture vs. g_XVBA_vtable.DecodePicture vs. g_XVBA_vtable.EndDecodePicture and especially vs. g_XVBA_vtable.SyncSurface

                  then even kodi v14 would be usable.

                  Hey AMD, if you read that: implementation was done 3 years ago: https://github.com/FernetMenta/xbmc/...94446495b1R872 and stopped cause of xvba-sdk 0.75 was not released. Search for m_apiSec and think of a decoder that has a different context to the presenter.

                  Comment


                  • #69
                    And a little bit talking to myself:

                    The XVBA API provies a TransferSurface method. This method can easily be used to make a full frame out of a field, so a simple Bobbing without any costs.

                    Code:
                    XVBA_Transfer_Surface_Input transInput;
                    transInput.size = sizeof(transInput);
                    transInput.session = m_config.xvbaSession;
                    transInput.src_surface = m_processPicture.render->surface;
                    transInput.target_surface = glSurface->glSurface;
                    transInput.flag = m_field; // if m_field is XVBA_BOTTOM_FIELD or XVBA_TOP_FIELD it will BOB, if XVBA_FRAME nothing will be done
                    
                    g_XVBA_vtable.TransferSurface(&transInput) // bobbing for free
                    So I hope VPP with VAAPI-BOB is next on the list for all the live tv viewers.

                    Comment

                    Working...
                    X