Publishing details

Changelog

libva-intel-driver (1.3.3.pre1-1275~c5cb17e-ppa1~saucy) saucy; urgency=medium

  * [c5cb17ea86f0065a939d3636dd26651c93d497c8]
    remove fixed uses of inte-gen4asm tool

    In the gen7 and gen8 post processing Makefiles the GEN4ASM
    variable is not honored when calling intel-gen4asm. This causes
    build errors when GEN4ASM is set to a different value

    This was discovered when using intel-gpu-tools version 1.7 where
    the shaders are actually compiled.

    Signed-off-by: Daniel Charles <email address hidden>
    Reviewed-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit f574f2e8a8da27b96abc3936c5b2372ff2b7eefb)


  * [745340dd013399f64507de73401ab3adb712dad5]
    Encoding: Use the different delimeter to pass packed_rawdata and slice_header based on VAConfigAttribEncPackedHeaders attribute

    Currently the packed_slice_header is optional. And it uses the VAEncSliceParameterBuffer
    as the delimeter to decide how to insert the packed rawdata/slice_header
    for one slice. This is not convenient under some scenario. For example: some
    user hope to be more flexible. When the user is responsible for generating the
    packed slice_header, it hopes to use the packed slice_header as the delimeter
    to determine how to inser the packed rawdata/slice_header for the given slice.
    So the VAConfigAttribEncPackedHeaders attriburation of encoding_context is
    used to decide which kind of delimeter.
    a. When the VAEncPackedSlice is set when calling vaCreateConfig, it will use
    the packed slice_header as delimeter. Of course the packed rawdata should be
    parsed before the packed slice_header for one given slice. For exmaple:
    for the slice 0: the packed rawdata should be parsed before paring the first
    packed slice_header. After one packed slice_header is parsed, it will start
    to parse the corresponding data for a new slice.

    b. When the VAEncPackedSlice is not set when calling vaCreateConfig, it will
    use the VAEncSliceParameterBuffer as delimeter.

    V1->V2: Return an error instead of only complaining warning message when packed
    slice_header is missing for some slice under the VAEncPackedSlice mode. This
    is the suggestion from Gwenole and Sreerenj Balachandran.

    Signed-off-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit 9d49a6d693aa6c862467a4a879bc86d9cb98dbe5)


  * [773525af39331df7a9d3178037320734774fc8be]
    Encoding: Update the comment for the data structure about the packed rawdata/slice_header data

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit 56715c893fa87e2d3af2938b9202d75cdc79a8fd)


  * [45481435f93b52f944c5f876e95fb7bfba56ed4f]
    Fix the segfault while encoding multiple slice per frame.

    Zero initialize the packed raw data index array and
    packed slice header index array during each preallocation.

    Signed-off-by: Sreerenj Balachandran <email address hidden>
    Reviewed-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit fbbe401aa28a0b3859d587ef08f0df15a2f7c8f2)


  * [1ed9128c99723ea202ba7614ca4f9c563b7ad846]
    Fix the segfault while inserting packed slice header

    Signed-off-by: Sreerenj Balachandran <email address hidden>
    Reviewed-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit 7c2273f1334d7d45e248d128e17200b7e8beffd1)


  * [bb3c0d9848f757906662884755e3184a05981d0b]
    Fix the GetConfigAttributes() for H264SteroHighProfile

    (cherry picked from commit 510b271f912afb35edac1d3fb39354ee98b01711)


  * [b5fec62b2533c7086ddd40d0c61b51aedc6e33c2]
    H264_encoding: Don't update the slice qp for CBR mode when finding packed slice_header data

    Otherwise the slice qp is inconsistent and the encoding is incorrect.

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit 897527c30435202927e6cd05cd5189a710d02c91)


  * [107274f309c6c3a7c59b70d5140b781341c7e9c2]
    H264_Encoding: Add the support of packed slice header to be flexible

    Under some encoding scenario, the user hopes to generate the packed slice
    header data by themself and then the driver can insert the passed slice
    header packed data into the coded clip.
    1.The VA_ENC_PACKED_HEADER_SLICE flag is exported and it is treated as optional.
    This is to say: if packed slice header data is passed, it will be
    inserted directly. If no packed slice header data is passed, the driver will
    help to generate it.
    2.Another restriction is that the packed slice header data is inserted after
    the packed rawdata for one slice. That is to say: If it needs to insert the
    packed rawdata and slice header data, the packed rawdata will be inserted
    firstly(This is handled by the driver).

    Signed-off-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit 00111e8a8bfa67b971419b72577eaa1b9f47bc34)

    Conflicts:
    	src/gen75_mfc.c
    	src/gen8_mfc.c


  * [ee4b8c3ec1e5b5f126d8bdb7021eb15630de751e]
    H264_encoding: Reset the last_packed_header_type to avoid the unpaired packed header type/data

    After adding the support of inserting the packed rawdata, more group of packed header data
    can be passed. In order to insert the packed rawdata correctly, the packed header type/
    data should be paired.

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit fd78866bd64d7ab57fe8cb0c4b25e8357973b0b1)


  * [89507c06c7ed03d829cf2526e621d844e174c90c]
    H264_encoding: Add the support of inserting the packed raw data passed from user

    Under some encoding scenario, the user-space application hopes that the driver
    can insert the passed packed rawdata into the coded clip. This is to allow the
    insertion of packed rawdata passed from user. As the position of packed rawdata
    is related with the slice. So the following restrictions are added:
    1. the packed rawdata header type/data should be paired.
    2. the packed rawdata data is inserted by following the passed order
    3. the packed rawdata header type/data is split by using VAEncSliceParameterBuffer.
    That is to say: The packed rawdata for slice 0 should be passed before the first
    VAEncSliceParameterBuffer. After one VAEncSliceParameterBuffer is parsed,
    the subseuquent packed rawdata is for another new slice. The subsequent
    packed rawdata after the last VAEncSliceParameterBuffer is ignored.
    4. it does not change the rule for the packed data of SPS/PPS/MISC type.

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit 974597ef64dc9a283d4787e1484a75d1610414f4)

    Conflicts:
    	src/gen75_mfc.c
    	src/gen8_mfc.c


  * [558e904bc5c471795b09f6c2dcf65ba31590b19b]
    H264_Encoding: Prepare some data structures for adding packed raw data

    Under some encoding scenario, the user-space application hopes that the driver
    can insert the passed packed rawdata into the coded clip. But the insertion of
    packed rawdata is related with the slice. So some data structures are added so
    that it can store how the packed rawdata is inserted into the coded clip
    per-slice.

    Signed-off-by: Zhao, Yakui <email address hidden>
    (cherry picked from commit 65727b1868f01d836659396724b83d2992656242)


  * [772e94298f2fc42da1f9be69de80664d9055b685]
    H264_Encoding: Parse the packed header data from user to fix the hacked code of HW skip bytes

    When the packed header data from user is inserted into the coded clip, it uses
    the hacked code to check the number of HW skip emulation bytes. This is wrong.
    So fix it.
    Of course if the packed header data is generated by the driver, it is
    unnecessary to check it and it can still use the pre-defined number of HW
    skip bytes.

    V1->V2: Based on Gwenole's comment more nal_unit_type is added.

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit cd518563f239cb8523c58010a695098465a4f04e)


  * [9aec3ffc5b1cf05ae19b70580506bb53eefc245b]
    Encoding: Reinitialize CBR bit rate-control parameter to support switch of bitrate under CBR

    Tested-By: Sean V Kelley <email address hidden>
    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit 929c1446a28dbefd9655774f2db3e10f7b631dcf)


  * [143c53900943c660390122f7fa4a1c5705798fdd]
    decoder: h264: fix frame store logic for MVC.

    In strict MVC decoding mode, when only the necessary set of inter-view
    reference pictures are passed to the ReferenceFrames array for decoding
    the current picture, we should not re-use a frame store id that might
    be needed for decoding another view component in the same access unit.

    One way to solve this problem is to track when the VA surface in a
    specified frame store id was last referenced. So, a "ref_age" field
    is introduced to the GenFrameStore struct and is updated whenever
    the surface is being referenced.

    Additionally, the list of retired refs candidates (free_refs) is kept
    ordered by increasing ref_age. That way, we can immediately know what
    is the oldest frame store id to recycle.

    Let deltaAge = CurrAge - RefAge:
    If deltaAge > 1, we know for sure that the VA surface is gone ;
    If deltaAge = 1, the surface could be re-used for inter prediction ;
    If deltaAge = 0, the surface could be re-used for inter-view prediction.

    The ref_age in each Frame Store entry is always current, i.e. it is
    the same for all reference frames that intervened in the decoding
    process of all inter view components of the previous access unit. The
    age tracks access units.

    v2: used a more correct representation of age, instead of POC [Yakui]
    v3: minor optimization for detecting changes of access unit [Haihao]

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 3b5eb0522fbfe1220dcd0c0bb093a93cfc25e22c)


  * [d2262e37a4737d0d03004c0b34165180ddb1d956]
    decoder: h264: improve AVC_REF_IDX_STATE for MVC.

    Each Reference List Entry has Bit 6 set to one if the reference
    picture is to be used as a long-term reference picture. However,
    the H.264 standard, and subsequently the VA-API specs, makes it
    possible to mark the picture as "used for short-term reference",
    as "used for long-term reference", or even none of those flags.

    This means we have to handle a minimum of 3 states. This doesn't
    fit the range of a single bit. Let's examine how this could be
    fixed from known practices.

    There are cases where the picture is added to RefPicListX[] even
    if it is not marked as "used for short-term reference" or "used
    for long-term reference": MVC with inter-view reference components
    or inter-view only reference components [H.8.4]. Ultimately, this
    has an incidence on the value of colZeroFlag (8.4.1.2.2). Since
    there is no way to program that, and that it depends on the picture
    to be marked as "used for short-term reference" or not, then it
    looks reasonable to imply Bit 6 (LongTermPicFlag) as a picture
    that is *not* "used for short-term reference", i.e. thus including
    genuine long-term reference pictures, and those that are neither
    long-term reference nor short-term reference pictures.

    In practice, this fixes MVCNV-2.264.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit edbdc0e87919d8b7261d882a32b2d3c271660931)


  * [da8a7e9accb5f8e1913440fdd2d662af6a0b7ef1]
    surface: drop SURFACE_DISPLAYED flag.

    The optimization by which the VA surface storage is deallocated after
    it is displayed and not used for reference or vaDeriveImage() purposes
    cannot be implemented safely. We need to honour explicit lifetimes
    defined by the upper codec layer.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 84926ace7a2c5b88df1ada167a1c273128469aad)


  * [aeef40157a7d3349ea8afc5dca0c198055027601]
    render: don't deallocate surface storage of displayed frames.

    Keep the VA surface storage live until it is explicitly scheduled
    for destruction through vaDestroySurfaces() interface. Otherwise,
    subsequent vaPutSurface() calls would have no effect.

    This fixes various use cases like: display of interlaced frames
    that are not marked for reference, multiple rendering to Pixmap
    for EXT_texture_from_pixmap and more precisely interlaced streams.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit a840e6403071d397a33e127e8058881a3ef50077)


  * [c173e3560dbbd9346cf34c6da9a6406c6c8089be]
    decoder: MVC chroma formats

    This is a part of fa469f74227a7b4e0e6f882c488132eaa9c44417 on staging

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    Signed-off-by: Xiang, Haihao <email address hidden>


  * [585596a468db65e93b618b7aabe4e46d23de7b1f]
    decoder: h264: expose the set of supported MVC profiles.

    H.264 MVC decoding support is defined as follows:
    - Stereo High profile on Sandybridge and newer ;
    - Multiview High profile on Haswell and newer.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 1f244834dedb7b46863b315a898d8649d01c5f58)

    Conflicts:
    	src/i965_device_info.c
    	src/i965_drv_video.c
    	src/va_backend_compat.h


  * [d07f1e3c6505b169f59f075b5ea5a82331118f8f]
    decoder: h264: enable Picture ID Remapping on Haswell and newer.

    Fill and submit MFX_AVC_PICID_STATE commands to Gen7.5+ hardware.
    This optimizes the management of the DPB as the binding array can
    now contain entries in any order. This also makes it possible to
    support H.264 MultiView High profiles, with any particular number
    of views.

    v2: added more comments for clarity, removed an assert [Yakui]

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 8dfdf10612c726b60ecd5b61eee2b7d6a520bb33)


  * [c4344dc2d58eedc2f3c07cb8ac512b3ee2a6477d]
    decoder: h264: factor out look ups for VA/H264 picture info.

    Add new avc_find_picture() helper function to search for a VAPictureH264
    struct based on the supplied VA surface id.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 3f4f9fc2893af24b7e88f44b6350a5a74d49f0c2)


  * [dcd97d032e4a236954f142d2adeed2f57ac65079]
    decoder: h264: fix submission of AVC_REF_IDX_STATE command.

    If the RefPicListX[] entry has no valid picture_id associated to it,
    then set the resulting state to 0xff. If that entry has no surface
    buffer storage either, then compose a valid state that maps to the
    first item in the reference frames list, as mandated by the PRM.

    v2: dropped the superfluous "found" variable [Yakui]

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 151b8851c3a9309e87712651a3697e20a7bdb6c9)


  * [d2e843eed7fa31d86e196fb0e07b9cd3c377c969]
    decoder: h264: simplify and optimize reference frame store updates.

    Simplify and optimize the update process of the reference frame store.
    Use less iterations to look up existing objects. Use a cache to store
    the free'd slots.

    Prerequisite: the reference_objects[] array was previously arranged in
    a way that the element at index i is exactly the object_surface that
    corresponds to the VA surface identified by the VAPictureH264.picture_id
    located at index i in the ReferenceFrames[] array.

    Theory of operations:

    1. Obsolete entries are removed first, i.e. entries in the internal DPB
       that no longer have a match in the supplied ReferenceFrames[] array.
       That obsolete entry index is stored in a local cache: free_slots[].

    2. This cache is completed with entries considered as "invalid" or "not
       present", sequentially while traversing the frame store for obsolete
       entries. At the end of this removal process, the free_slots[] array
       represents all possible indices in there that could be re-used for
       new reference frames to track.

    3. The list of ReferenceFrames[] objects is traversed for new entries
       that are not already in the frame store. If an entry needs to be
       added, it is placed at the index obtained from the next free_slots[]
       element. There is no need to traverse the frame store array again,
       the next available slot can be known from that free_slots[] cache.

    v2: dropped the superfluous "found" variable [Yakui]
    v3: renamed "free_slots" array to "free_refs", which now holds
      GenFrameStore entries

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 70ecad1264255123df99b472891e8ee90399013c)


  * [a35d3c2d8f006d4b019881a23ad57819eeb7d62e]
    decoder: h264: allocate reference frames earlier, if needed.

    Sometimes, a dummy frame comes from the codec layer and it is used
    as a reference, per the comment in the existing code. Even though
    this looks suspicious, keep this criterion but make sure to try
    allocating the VA surface, if needed, earlier in the function that
    sanity checks the parameters for decoding the current frame.

    This makes it possible to fail at a much earlier time, and actually
    make it possible to return a sensible error code to the upper layer.

    Also fix the reference_objects[] array elements to be an exact 1:1
    match for ReferenceFrames[] array elements, including possible but
    unlikely holes in it. The former array holds object_surface structs
    corresponding to the VA surfaces present in the ReferenceFrames[]
    array and identified by VAPictureH264.picture_id.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 5a12ccda3f77d03b6ffa8249d607c03e4dc8161f)


  * [99075c5cc755a767e8904777d3a98bd8c222a03b]
    decoder: h264: don't deallocate surface storage of older frames.

    Drop the optimization whereby surfaces that are no longer marked as
    reference and that were already displayed are to be destroyed. This
    is wrong mainly for two reasons:

    1. The surface was displayed... once but it may still be needed for
       subsequent operations like displaying it again, using it for a
       transcode pipeline (encode) for instance, etc.

    2. The new set of ReferenceFrames[] correspond to the active set of
       reference frames used for decoding the current slice. In presence
       of Multiview Coding (MVC), that could correspond to the current
       view, in view order index, but the surface may still be needed
       for decoding the next view with the same view_id, while also
       decoding other views with another set of reference frames for them.

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    (cherry picked from commit 77af916b44da04e3424490506a7e5bef39c80c7c)


  * [1ae22a0549d30dd24991c4c2c9902e7b7a8d935e]
    encoder: MVC: Add support for MVC profiles

    This is a part of bd630edd844b88ea543a027654db296ff7da16cd on staging

    Signed-off-by: Li Xiaowei <email address hidden>
    Signed-off-by: Xiang, Haihao <email address hidden>


  * [40af27ded9830fa61dcf61d01c21551e1a148647]
    MVC: CODEC_H264_MVC defination and relatived properties check

    Signed-off-by: Li Xiaowei <email address hidden>
    (cherry picked from commit 7d1ddfd3646f35f306f38bfabef6af9b2ebb19f4)

    Conflicts:
    	src/i965_drv_video.c


  * [ab9de41941ea86e09e0ea2a170ebd2c84693a508]
    h264: Add the macros for MVC profiles to keep backward compatibility with libva 1.3.1

    It is a part of 1f244834dedb7b46863b315a898d8649d01c5f58 on staging

    Signed-off-by: Gwenole Beauchesne <email address hidden>
    Signed-off-by: Xiang, Haihao <email address hidden>


  * [8715ce33aae4e25ef98eed9c1bdcc6b95c5e3253]
    Define i965_CreateSurfaces in header file explicitly to avoid multiple declaration

    Signed-off-by: Zhao Yakui <email address hidden>
    (cherry picked from commit 8b3945aa5df443e93a3f5e6e97dffb1574e2a936)


  * [89dcd2e82093654d5c1ab68a9d132406dd641b34]
    Check the pointer against NULL

    The issue is reported by Klockwork

    Signed-off-by: Xiang, Haihao <email address hidden>
    (cherry picked from commit 80d1f89388c9cb70218cd759592d2167c8845322)


  * [ce2cc4e48e5478538fe332119bb0523db4761b44]
    1.3.3.pre1 for development

    Signed-off-by: Xiang, Haihao <email address hidden>


  * [cc403687155f8b79b3752e32731d44d39c040642]
    Intel driver 1.3.2

    Signed-off-by: Xiang, Haihao <email address hidden>
 -- Andrey Pavlenko <email address hidden>   Sat, 05 Jul 2014 00:51:18 +0400

Available diffs

Builds

Built packages

Package files