OSDN Git Service

android-x86/hardware-intel-common-vaapi.git
6 years agogenX_mfd: fix intensity compensation for frame-interlaced content
carpalis [Sat, 28 Oct 2017 13:21:39 +0000 (15:21 +0200)]
genX_mfd: fix intensity compensation for frame-interlaced content

When frame-interlaced pictures are signalled to be intensity
compensated, we need to set the hardware to compensating both the top and
the bottom field.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen7_mfd: remove obsolete gen7_vc1_surface fields
carpalis [Sat, 28 Oct 2017 09:07:13 +0000 (11:07 +0200)]
gen7_mfd: remove obsolete gen7_vc1_surface fields

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agoi965_decoder_utils: enable decoding of VC-1 interlaced pictures
carpalis [Fri, 27 Oct 2017 12:58:53 +0000 (14:58 +0200)]
i965_decoder_utils: enable decoding of VC-1 interlaced pictures

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen8_mfd: add support for VC-1 interlaced intensity compensation
carpalis [Fri, 27 Oct 2017 12:57:00 +0000 (14:57 +0200)]
gen8_mfd: add support for VC-1 interlaced intensity compensation

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen8_mfd: add support for VC-1 interlaced reference frames
carpalis [Fri, 27 Oct 2017 12:56:26 +0000 (14:56 +0200)]
gen8_mfd: add support for VC-1 interlaced reference frames

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen8_mfd: add support for VC-1 interlaced pictures
carpalis [Fri, 27 Oct 2017 12:55:56 +0000 (14:55 +0200)]
gen8_mfd: add support for VC-1 interlaced pictures

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen7_mfd: add support for VC-1 interlaced intensity compensation
carpalis [Fri, 27 Oct 2017 12:54:57 +0000 (14:54 +0200)]
gen7_mfd: add support for VC-1 interlaced intensity compensation

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen7_mfd: add support for VC-1 interlaced reference frames
carpalis [Fri, 27 Oct 2017 12:53:59 +0000 (14:53 +0200)]
gen7_mfd: add support for VC-1 interlaced reference frames

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen7_mfd: add support for VC-1 interlaced pictures
carpalis [Fri, 27 Oct 2017 12:53:21 +0000 (14:53 +0200)]
gen7_mfd: add support for VC-1 interlaced pictures

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen75_mfd: add support for VC-1 interlaced intensity compensation
carpalis [Fri, 27 Oct 2017 12:26:18 +0000 (14:26 +0200)]
gen75_mfd: add support for VC-1 interlaced intensity compensation

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen75_mfd: add support for VC-1 interlaced reference frames
carpalis [Fri, 27 Oct 2017 12:24:24 +0000 (14:24 +0200)]
gen75_mfd: add support for VC-1 interlaced reference frames

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen75_mfd: add support for VC-1 interlaced pictures
carpalis [Fri, 27 Oct 2017 12:23:07 +0000 (14:23 +0200)]
gen75_mfd: add support for VC-1 interlaced pictures

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agoi965_decoder_utils: add support for VC-1 interlaced pictures
carpalis [Fri, 27 Oct 2017 12:19:10 +0000 (14:19 +0200)]
i965_decoder_utils: add support for VC-1 interlaced pictures

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: fix calculation of motion vector mode
carpalis [Fri, 27 Oct 2017 11:04:33 +0000 (13:04 +0200)]
genX_mfd: fix calculation of motion vector mode

As stated in the PRM, the FastUVMCFlag field should be equal to the LSB
of the Motion Vector Mode field. This also conforms to VC-1 spec, as
FASTUVMC controls whether color difference motion vectors are
reconstructed with quarter of half pixel resolution.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: no raw coded bitplanes for skipped pictures
carpalis [Wed, 25 Oct 2017 11:26:01 +0000 (13:26 +0200)]
genX_mfd: no raw coded bitplanes for skipped pictures

Skipped pictures should not signal raw coded bitplanes as there are no
MBs encoded. Failure to do so results in decoding errors.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: fix BitplanePresentFlag for skipped pictures
carpalis [Tue, 24 Oct 2017 18:30:16 +0000 (20:30 +0200)]
genX_mfd: fix BitplanePresentFlag for skipped pictures

Skipped pictures do not pass a bitplane buffer. We do, however,
locally encode a bitplane buffer with only the SKIPMB bit set. The
presence of this buffer must be passed through the BitplanePresentFlag
hardware field.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: align dmv buffer use with VC-1 spec and PRM
carpalis [Mon, 23 Oct 2017 10:05:35 +0000 (12:05 +0200)]
genX_mfd: align dmv buffer use with VC-1 spec and PRM

As stated in VC-1 spec, the direct MV buffer will be written when
decoding a P frame. Subsequently, the direct MV buffer is read when
decoding a B frame that backward references this P frame.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: no need for loop filtering for skipped pictures
carpalis [Mon, 23 Oct 2017 09:02:35 +0000 (11:02 +0200)]
genX_mfd: no need for loop filtering for skipped pictures

Skipped pictures are equal to their reference frame and, therefore,
should not pass the loop filter. Although the loop filter was already
a null operation as all transform coefficients are zero for skipped
pictures, this may save some cyles in the decoder hardware.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: remove mapping of I frame to BI frame
carpalis [Mon, 23 Oct 2017 08:23:35 +0000 (10:23 +0200)]
genX_mfd: remove mapping of I frame to BI frame

This mapping does not make sense. Unless the mapping is some workaround
for a hardware quirk, we should be able to safely remove it. If this
breaks things, we can always put it back accompanied with an explanation
in the code.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: change order within if-else
carpalis [Mon, 23 Oct 2017 08:13:59 +0000 (10:13 +0200)]
genX_mfd: change order within if-else

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: use input range instead of mapped range in comparison
carpalis [Sun, 22 Oct 2017 18:40:31 +0000 (20:40 +0200)]
genX_mfd: use input range instead of mapped range in comparison

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: remove one-to-one mapping for picture_type
carpalis [Sun, 22 Oct 2017 17:53:11 +0000 (19:53 +0200)]
genX_mfd: remove one-to-one mapping for picture_type

In genX_mfd_vc1_pic_state, the logic of picture_type is not very clear
as it is mapped from the input range to the hardware range. The mapping,
however, is an identity mapping that, effectively, only maps a skipped
picture to a P picture. By putting the skipped picture logic explicitly
in the ocde, we can remove the unnecessary mapping and make the logic
much more clear.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: fix unnecessary variable reuse
carpalis [Sun, 22 Oct 2017 16:09:21 +0000 (18:09 +0200)]
genX_mfd: fix unnecessary variable reuse
Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: do not scale dmv buffer with height
carpalis [Sun, 22 Oct 2017 14:30:47 +0000 (16:30 +0200)]
genX_mfd: do not scale dmv buffer with height

PRM states that for VC-1 the direct motion vector buffer may be scaled
with frame height but should not be scaled with frame width. Hardware
assumes frame width is fixed at 128 MBs.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: align hardware programming of Y Offset for V(Cr) with comment
carpalis [Sun, 22 Oct 2017 13:54:58 +0000 (15:54 +0200)]
genX_mfd: align hardware programming of Y Offset for V(Cr) with comment

Although the PRM does not state that this field must be zero for
non-JPEG, we might as well set it to zero as indicated in the comment
and to make its use more clear.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: fix hardware programming for bitplanes coded in raw mode
carpalis [Sun, 22 Oct 2017 13:13:54 +0000 (15:13 +0200)]
genX_mfd: fix hardware programming for bitplanes coded in raw mode

Bitplanes that are coded in raw mode are signalled through the
raw_coding flags in the VAPictureParameterBufferVC1 structure. The
absence of a bitplane does not necessarily imply that this bit is
encoded in raw mode. A progressive P picture in advanced profile, for
example, does not encode the SKIPMB bitplane nor does it encode this
bit in raw mode.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: mask unused bits in bitplane_present.value
carpalis [Sun, 22 Oct 2017 11:29:19 +0000 (13:29 +0200)]
genX_mfd: mask unused bits in bitplane_present.value

Due to the union construct, unused bits in bitplane_present.value might
be uninitialized even when the used bits are all set to a value.
Masking the unused bits prevents spurious true values when all used
bits are unset, e.g. skipped pictures.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: fix bitplane encoding for skipped pictures
carpalis [Sat, 21 Oct 2017 14:53:16 +0000 (16:53 +0200)]
genX_mfd: fix bitplane encoding for skipped pictures

VC-1 skipped pictures do not encode a slice or MB layer, nor do they
encode any bitplanes. For a skipped picture, we should unconditionally
encode the bitplane buffer with only the SKIPMB bit set. Furthermore,
we optimize the static picture_type comparison out of the double loop.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogen75_mfd: Check ptr before dereferencing
carpalis [Sat, 21 Oct 2017 13:07:39 +0000 (15:07 +0200)]
gen75_mfd: Check ptr before dereferencing

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agogenX_mfd: remove emulation byte on MB layer boundary
carpalis [Sat, 21 Oct 2017 10:22:19 +0000 (12:22 +0200)]
genX_mfd: remove emulation byte on MB layer boundary

As stated in the PRM, VC-1 decoder hardware cannot handle the case
where the second 0x00 byte in the emulation prevention pattern
0x00 0x00 0x03 (0x00-0x03) coincides with the start of the
MB layer. Fixed by overwriting the 0x03 byte with the previous 0x00
byte and adjusting the MB layer byte offset accordingly.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
6 years agoDo CSC/scaling from 8bit 420 YUV to RGB32 in the common path
Xiang, Haihao [Thu, 19 Oct 2017 23:14:49 +0000 (07:14 +0800)]
Do CSC/scaling from 8bit 420 YUV to RGB32 in the common path

A new vpp shader is added

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoDo CSC/scaling for YV12/IMC1/IMC3 surface in the common path
Xiang, Haihao [Fri, 20 Oct 2017 00:07:25 +0000 (08:07 +0800)]
Do CSC/scaling for YV12/IMC1/IMC3 surface in the common path

The existing vpp shader is re-used

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoAllow loading mulitple kernels for a single GPE for the common path on GEN8
Xiang, Haihao [Sun, 22 Oct 2017 00:47:42 +0000 (08:47 +0800)]
Allow loading mulitple kernels for a single GPE for the common path on GEN8

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoMove reserved bytes to the end of the structure
Xiang, Haihao [Sat, 21 Oct 2017 20:09:03 +0000 (04:09 +0800)]
Move reserved bytes to the end of the structure

This structure defines the input parameters from driver to common
csc/scaling shader, so the corresponding vpp shaders are updated as
well. In addition, more reserved bytes are added for future use

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoAdd info messages for failure cases of vaExportSurfaceHandle()
Mark Thompson [Thu, 30 Nov 2017 22:31:34 +0000 (22:31 +0000)]
Add info messages for failure cases of vaExportSurfaceHandle()

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agoAdd new functions for logging
Mark Thompson [Thu, 30 Nov 2017 22:19:31 +0000 (22:19 +0000)]
Add new functions for logging

These use the error and info callbacks added recently to libva.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agoAVC encoder: fix ROI CQP array indexing
U. Artie Eoff [Fri, 1 Dec 2017 21:16:12 +0000 (13:16 -0800)]
AVC encoder: fix ROI CQP array indexing

Use correct variable for ROI indexing.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoAVC encoder: fix ROI config for CQP
U. Artie Eoff [Fri, 1 Dec 2017 20:59:40 +0000 (12:59 -0800)]
AVC encoder: fix ROI config for CQP

Introduced in:

commit 972e6f2b36499389bc7cb7bb34414423b5525143
Author: Xiang, Haihao <haihao.xiang@intel.com>
Date:   Wed Jan 4 09:40:47 2017 +0800

    AVC encoder: use generic ROI parameters

num_roi setting was lost and thus always 0, which essentially
disabled the "for (j = num_roi; j ; j--)" loop in the
VA_RC_CQP case.

Fix this by ensuring num_roi is set to the correct value stored
in the common structure.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoImplement vaExportSurfaceHandle()
Mark Thompson [Sun, 17 Sep 2017 17:10:38 +0000 (18:10 +0100)]
Implement vaExportSurfaceHandle()

This is a new interface in libva to support wider use-cases of passing
surfaces to external APIs.  In particular, this does not require creation
of derived images before export, and offers richer metadata such as DRM
format information.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agotest: add null check assertions to object_heap tests
U. Artie Eoff [Wed, 29 Nov 2017 19:26:59 +0000 (11:26 -0800)]
test: add null check assertions to object_heap tests

Ensure objects are not NULL before dereferencing.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agovme_context->private_enc_ctx: check null before dereference
U. Artie Eoff [Wed, 29 Nov 2017 19:06:13 +0000 (11:06 -0800)]
vme_context->private_enc_ctx: check null before dereference

Ensure priv_ctx is not null before dereferencing it.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agofix possible null dereference after null check
U. Artie Eoff [Wed, 29 Nov 2017 18:45:10 +0000 (10:45 -0800)]
fix possible null dereference after null check

obj_surf_input and obj_surf_output are dereferenced unconditionally
and required for successful control flow.  Thus, verify they
are not null, else return error.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agofix inadvertent logic error in conditional
U. Artie Eoff [Wed, 29 Nov 2017 18:17:11 +0000 (10:17 -0800)]
fix inadvertent logic error in conditional

The condition:

  slice_param->slice_type != SLICE_TYPE_I ||
    slice_param->slice_type != SLICE_TYPE_SI

...is always true.  This appears to be an inadvertent
logic error by original author.  The assumption is that
&& was the intention and makes more sense, thus change it
to us && instead of ||.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agotest: fix use of uninitialized variable
U. Artie Eoff [Thu, 16 Nov 2017 23:25:21 +0000 (15:25 -0800)]
test: fix use of uninitialized variable

Initialize VAImage variable at the point of declaration.

Since i965_DeriveImage is declared as extern in the tests,
a static scanner appears to be unable to detect that VAImage is
actually initialized by the i965_DeriveImage implementation
in the driver.  This causes it to flag it as "use of an
uninitialized variable" along the success path.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agogtest: Fix 5 failed cases on legacy platforms
Xiang, Haihao [Sat, 21 Oct 2017 06:30:24 +0000 (14:30 +0800)]
gtest: Fix 5 failed cases on legacy platforms

Some legacy platforms only support VAProfileH264StereoHigh decoding

[----------] Global test environment tear-down
[==========] 599 tests from 16 test cases ran. (335 ms total)
[  PASSED  ] 594 tests.
[  FAILED  ] 5 tests, listed below:
[  FAILED  ] AVCDecode/I965ConfigTest.Create/3, where GetParam() = VAProfileH264MultiviewHigh : VAEntrypointVLD
[  FAILED  ] AVCEncode/I965ConfigTest.Create/12, where GetParam() = VAProfileH264MultiviewHigh : VAEntrypointEncSlice
[  FAILED  ] AVCEncode/I965ConfigTest.Create/13, where GetParam() = VAProfileH264MultiviewHigh : VAEntrypointEncSliceLP
[  FAILED  ] AVCEncode/I965ConfigTest.Create/14, where GetParam() = VAProfileH264MultiviewHigh : VAEntrypointEncPicture
[  FAILED  ] AVCEncode/I965ConfigTest.Create/15, where GetParam() = VAProfileH264MultiviewHigh : VAEntrypointFEI

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoAdd upper bound check in HCP_IND_OBJ_BASE_ADDR_STATE
Xiang, Haihao [Mon, 30 Oct 2017 21:58:24 +0000 (05:58 +0800)]
Add upper bound check in HCP_IND_OBJ_BASE_ADDR_STATE

The commit 29e375a fixed some VP9 decoding artifacts reported in
https://github.com/01org/intel-vaapi-driver/issues/262, but we still
see artifacts when decoding some VP9 clips. More investigations show
that the artifacts are caused by graphics address 0

The graphics address for a GEM BO may be 0 since the commit
below was merged into i915 KMD

commit 2889caa9232109afc8881f29a2205abeb5709d0c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Jun 16 15:05:19 2017 +0100

    drm/i915: Eliminate lots of iterations over the execobjects array

So we never saw this issue before commit 2889caa

Setting upper bound to 0 causes that HW ignores upper bound check, which
works for non-zero base graphics address in HCP pipeline, however the
upper bound check is required for graphics address 0, so we add the bound
check no matter what is the graphics address

This fixes https://github.com/01org/intel-vaapi-driver/issues/297

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agovp9enc: limit min_qp of brc to be non-zero
Zhong Li [Thu, 16 Nov 2017 09:05:14 +0000 (17:05 +0800)]
vp9enc: limit min_qp of brc to be non-zero

If base_qindex (luma_ac_qindex) is equal to zero, the enode mode will be
lossless mode when
luma_dc_qindex_delta/chroma_ac_qindex_delta/chroma_dc_qindex_delta are
also zero. In this case, the tx_mode should be set to ONLY_4X4, but current
driver only support TX_MODE_SELECT. This will cause the lossless mode
encoding failure.
Limitting the min_qp to be non-zero can force the encoding mode to be normal
mode.
It is to fix issue #284

Signed-off-by: Zhong Li <zhong.li@intel.com>
6 years agofix memset size for fixed array
U. Artie Eoff [Tue, 21 Nov 2017 20:05:39 +0000 (12:05 -0800)]
fix memset size for fixed array

Use sizeof on fixed array instead of hard-coded value.

The hard-coded value did not account for the size of the
data type (uint32_t) and therefore did not zero out the
entire array, rather it only zero'd out number of elements
bytes.

This prevents compiler memset-elt-size error when using
-Wall -Werror compiler flags.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agogen5_6: fix null shader generation
Sebastian Ramacher [Thu, 5 Oct 2017 22:23:54 +0000 (00:23 +0200)]
gen5_6: fix null shader generation

Also null.g4b is not required here.

Signed-off-by: Sebastian Ramacher <sramacher@debian.org>
6 years agoh264: fix null shader generation
Sebastian Ramacher [Thu, 5 Oct 2017 22:25:55 +0000 (00:25 +0200)]
h264: fix null shader generation

Signed-off-by: Sebastian Ramacher <sramacher@debian.org>
6 years agoMerge branch 'v2.0-branch' into master
Xiang, Haihao [Tue, 24 Oct 2017 07:19:39 +0000 (15:19 +0800)]
Merge branch 'v2.0-branch' into master

Conflicts:
configure.ac

6 years agointel-vaapi-driver 2.0.0
Xiang, Haihao [Sat, 21 Oct 2017 04:55:59 +0000 (12:55 +0800)]
intel-vaapi-driver 2.0.0

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agotest/streamables: use new vaStr methods when appropriate
U. Artie Eoff [Wed, 18 Oct 2017 02:13:14 +0000 (19:13 -0700)]
test/streamables: use new vaStr methods when appropriate

New vaStr methods were added in libva 2.0.

Fixes #273

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agointel-vaapi-driver 2.0.0.pre3
Xiang, Haihao [Fri, 13 Oct 2017 17:32:42 +0000 (01:32 +0800)]
intel-vaapi-driver 2.0.0.pre3

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoChange the vertical alignment for linear surface
Xiang, Haihao [Wed, 30 Aug 2017 07:26:25 +0000 (15:26 +0800)]
Change the vertical alignment for linear surface

The memory is allocated together for planar YUV, but we may use
Y, U, V surfaces for 3-plane YUV or Y, UV surfaces for 2-plane YUV
separately, e.g. a NV12 surface is taken as 2 separate surfaces by
the implemetation of vaPutSurface() in the driver. The memory format
for each surface is either linear or tiled. In the past we thought linear
surface requires 4K aligned surface base address, like as tiled surface,
so we set the alighment for height to 16. Actually linear surface only
requires base address is naturally-aligned to the element size. In
addition, some operations in the driver requires surface height is a
multiple of 4. so we can set the alignment for height to 4 for linear
surface.

In addition, it is wrong to check whether surface height is aligned to 16

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
(cherry picked from commit c8f2493fd870438c3b7b1c269ca95ef334ed094a)

6 years agoRemove some unused static tables
Mark Thompson [Sun, 8 Oct 2017 15:28:23 +0000 (16:28 +0100)]
Remove some unused static tables

Also fix a minor infelicity highlighted by astyle.

6 years agoRemove unused variable
Mark Thompson [Sun, 1 Oct 2017 14:54:22 +0000 (15:54 +0100)]
Remove unused variable

The last reference to it was removed in c408627e.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agoChange the vertical alignment for linear surface
Xiang, Haihao [Wed, 30 Aug 2017 07:26:25 +0000 (15:26 +0800)]
Change the vertical alignment for linear surface

The memory is allocated together for planar YUV, but we may use
Y, U, V surfaces for 3-plane YUV or Y, UV surfaces for 2-plane YUV
separately, e.g. a NV12 surface is taken as 2 separate surfaces by
the implemetation of vaPutSurface() in the driver. The memory format
for each surface is either linear or tiled. In the past we thought linear
surface requires 4K aligned surface base address, like as tiled surface,
so we set the alighment for height to 16. Actually linear surface only
requires base address is naturally-aligned to the element size. In
addition, some operations in the driver requires surface height is a
multiple of 4. so we can set the alignment for height to 4 for linear
surface.

In addition, it is wrong to check whether surface height is aligned to 16

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agointel-vaapi-driver 2.0.0.pre2
Xiang, Haihao [Fri, 29 Sep 2017 06:56:49 +0000 (14:56 +0800)]
intel-vaapi-driver 2.0.0.pre2

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoBump intel-vaapi-driver to 2.0.1.pre1 for development
Xiang, Haihao [Fri, 29 Sep 2017 05:44:41 +0000 (13:44 +0800)]
Bump intel-vaapi-driver to 2.0.1.pre1 for development

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoUpdate NEWS
Xiang, Haihao [Thu, 28 Sep 2017 07:28:16 +0000 (15:28 +0800)]
Update NEWS

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoUpdate Makefile.am for 'make dist'
Xiang, Haihao [Thu, 28 Sep 2017 07:35:59 +0000 (15:35 +0800)]
Update Makefile.am for 'make dist'

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoInitialize kernel_param for the scaling kernel of avc encoder
Peng.Chen [Wed, 27 Sep 2017 08:53:00 +0000 (16:53 +0800)]
Initialize kernel_param for the scaling kernel of avc encoder

Signed-off-by: Peng.Chen <peng.c.chen@intel.com>
6 years agoDon't create SEI unit
Xiang, Haihao [Tue, 12 Sep 2017 03:03:35 +0000 (11:03 +0800)]
Don't create SEI unit

Instead the application should provide a right packed SEI buffer if
SEI is required because it is hard to know the value for each SEI
element in the driver.

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoRevert "test: ignore deprecated-declarations for GCC >= 6.x"
Xiang, Haihao [Thu, 31 Aug 2017 02:21:02 +0000 (10:21 +0800)]
Revert "test: ignore deprecated-declarations for GCC >= 6.x"

This reverts commit ba9d2268b81e5bdde6ec80d52c28fd03d6ae5abe.

6 years agoRemove VAProfileH264Baseline from gtest
Xiang, Haihao [Thu, 31 Aug 2017 03:07:24 +0000 (11:07 +0800)]
Remove VAProfileH264Baseline from gtest

VAProfileH264Baseline was marked as deprecated

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoFix deprecated warning
Xiang, Haihao [Wed, 1 Jan 2098 01:41:42 +0000 (09:41 +0800)]
Fix deprecated warning

enums and VA features marked as deprecated should not be used any more.

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoFix a typo in VAConfigAttribValEncROI
Xiang, Haihao [Tue, 20 Jun 2017 04:38:22 +0000 (12:38 +0800)]
Fix a typo in VAConfigAttribValEncROI

The corresponding typo in libva has been fixed in libva 2.0

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoUse the latest symbol name
Xiang, Haihao [Fri, 30 Jun 2017 13:29:37 +0000 (21:29 +0800)]
Use the latest symbol name

A namespace prefix has been added to global DRI functions
in libva-x11, so the driver should be updated as well

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agotest: ignore deprecated-declarations for GCC >= 6.x
U. Artie Eoff [Fri, 7 Jul 2017 01:51:47 +0000 (18:51 -0700)]
test: ignore deprecated-declarations for GCC >= 6.x

In libva 2.0 the VAProfileH264Baseline declaration has been
deprecated.

In the test/Makefile.am, we use -Wall -Werror so all warnings
are treated as errors.  For GCC < 6.x, deprecated-declarations
are not flagged as warnings, thus don't break compilation.
However, GCC >= 6.x treats deprecated-declarations as warnings
and therefore breaks compilation.

Ignore deprecated-declarations with the -Wno-deprecated-declarations
compiler flag for now.

Fixes #219

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agointel-vaapi-driver 2.0.0.pre1 for development
Xiang, Haihao [Mon, 12 Jun 2017 16:53:32 +0000 (00:53 +0800)]
intel-vaapi-driver 2.0.0.pre1 for development

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agochange file name prefix from gen9 to i965 for avc encoder
Wang Tiatian [Mon, 18 Sep 2017 14:36:49 +0000 (10:36 -0400)]
change file name prefix from gen9 to i965 for avc encoder

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
6 years agoupdate gen8 avc encoder code path
Wang Tiatian [Fri, 8 Sep 2017 15:15:31 +0000 (11:15 -0400)]
update gen8 avc encoder code path

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
6 years agoadd init kernel, set curbe, send surface for gen8 avc encoder
Wang Tiatian [Fri, 8 Sep 2017 15:13:26 +0000 (11:13 -0400)]
add init kernel, set curbe, send surface for gen8 avc encoder

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
6 years agoadd structures and const tables related with gen8 avc
Wang Tiatian [Wed, 6 Sep 2017 15:03:30 +0000 (11:03 -0400)]
add structures and const tables related with gen8 avc

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
6 years agoadd gen8 avc encoder kernel
Wang Tiatian [Wed, 6 Sep 2017 15:01:42 +0000 (11:01 -0400)]
add gen8 avc encoder kernel

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
Conflicts:
src/gen9_avc_encoder_kernels.c

6 years agochange prefix of function name from gen9 to i965 in gpe utils
Wang Tiatian [Fri, 8 Sep 2017 15:01:46 +0000 (11:01 -0400)]
change prefix of function name from gen9 to i965 in gpe utils

Signed-off-by: Wang Tiatian <tiantian.wang@intel.com>
6 years agomake gpe utils compatible with gen8
laureatian [Mon, 21 Aug 2017 20:42:01 +0000 (16:42 -0400)]
make gpe utils compatible with gen8

Signed-off-by: Wang Tiantian <tiantian.wang@intel.com>
6 years agoUpdate the right codename for KBL/GLK
peng.chen [Mon, 11 Sep 2017 08:44:07 +0000 (16:44 +0800)]
Update the right codename for KBL/GLK

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoSet pipe_buffer_state before ind_obj_base_addr for VP9 decoder
peng.chen [Wed, 6 Sep 2017 03:15:45 +0000 (11:15 +0800)]
Set pipe_buffer_state before ind_obj_base_addr for VP9 decoder

it fixed a potential VP9 decoding issue at some cases

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoAdd the support of Coffee Lake
peng.chen [Mon, 14 Aug 2017 19:18:10 +0000 (03:18 +0800)]
Add the support of Coffee Lake

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoAdd several asserts to detect unvalid NULL pointer
peng.chen [Sun, 27 Aug 2017 18:03:50 +0000 (02:03 +0800)]
Add several asserts to detect unvalid NULL pointer

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agogen6_mfd: Check ptr before dereferencing
fritsch [Mon, 4 Sep 2017 05:06:50 +0000 (07:06 +0200)]
gen6_mfd: Check ptr before dereferencing

6 years agogen7_mfd: Check ptr before dereferencing
fritsch [Sat, 26 Aug 2017 21:01:56 +0000 (23:01 +0200)]
gen7_mfd: Check ptr before dereferencing

6 years agogen8_mfd: Check ptr before dereferencing
fritsch [Sat, 26 Aug 2017 20:41:31 +0000 (22:41 +0200)]
gen8_mfd: Check ptr before dereferencing

6 years agoFEI: validate VAConfigAttribRateControl in i965_CreateConfig
U. Artie Eoff [Wed, 23 Aug 2017 16:14:17 +0000 (09:14 -0700)]
FEI: validate VAConfigAttribRateControl in i965_CreateConfig

VAEntrypointFEI only supports VA_RC_CQP in VAConfigAttribRateControl
config attribute.  Return VA_STATUS_ERROR_INVALID_CONFIG if it's
set to anything else.

Fixes #257

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoFEI: test: update brc expectation for VAEntrypointFEI
U. Artie Eoff [Wed, 23 Aug 2017 16:12:03 +0000 (09:12 -0700)]
FEI: test: update brc expectation for VAEntrypointFEI

VAEntrypointFEI only supports VA_RC_CQP.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoFEI: Bump the required VA-API version
Sreerenj Balachandran [Wed, 23 Aug 2017 00:45:53 +0000 (17:45 -0700)]
FEI: Bump the required VA-API version

FEI support has been added in VA-API version 0.40.1, which
is the minum required version for the driver too.

libva PR: https://github.com/01org/libva/pull/105

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoFEI: tests: Add VAEntrypointFEI
Sreerenj Balachandran [Fri, 18 Aug 2017 18:19:44 +0000 (11:19 -0700)]
FEI: tests: Add VAEntrypointFEI

Add the FEI entrypoint in test case scenarios

Fixes #228

6 years agoFEI: Select VME and/or PAK as per user request
Sreerenj Balachandran [Fri, 18 Aug 2017 18:19:14 +0000 (11:19 -0700)]
FEI: Select VME and/or PAK as per user request

Driver supports VME only(ENC), PAK only(PAK)
and VME_PAK(ENC_PAK) modes.

Fixes #228

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoFEI : Add FEI support for AVC Encode in SKL
Sreerenj Balachandran [Fri, 18 Aug 2017 18:18:45 +0000 (11:18 -0700)]
FEI : Add FEI support for AVC Encode in SKL

Below is the list of contributions from Zhong Li <zhong.li@intel.com>

a) Fixed issues with P/B Macroblock encoding
b) Fixed a GPU Hang with I frame encoding and unnecessary flushing in PAK
c) Fixed the avc and fei kernel size setting error
d) Disabled all scaling operations because of no HME support

Fixes #228

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoFEI: Add GEN9 AVC FEI specific constants
Sreerenj Balachandran [Fri, 18 Aug 2017 18:17:22 +0000 (11:17 -0700)]
FEI: Add GEN9 AVC FEI specific constants

Added curbe init data for I,P,B and I_DIST kernels

Fixes #228

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoFEI: Add AVC FEI media kernels for SKL
Sreerenj Balachandran [Fri, 18 Aug 2017 18:16:56 +0000 (11:16 -0700)]
FEI: Add AVC FEI media kernels for SKL

We only have the media kernel binaries at this point.

Fixes #228

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoFEI: Add basic infrastructure for FEI enablement
Sreerenj Balachandran [Fri, 18 Aug 2017 18:16:36 +0000 (11:16 -0700)]
FEI: Add basic infrastructure for FEI enablement

Add necessary changes in common structures and apis
to support FEI (Flexible Encoder Infrastructure).

* add support for the new entrypoing VAEntrypointFEI
* fixes in vaQueryConfigEntrypoints(), vaGetConfigAttributes(),
vaCreateContext(), vaCreateBuffer(), vaRenderPicture() and vaEndPicture()

Fixes #228

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
6 years agoAdd a new shader for CSC/scaling from P010/I010 to YUY2/UYVY/NV12/I420 on GEN9
Xiang, Haihao [Mon, 7 Aug 2017 08:23:21 +0000 (16:23 +0800)]
Add a new shader for CSC/scaling from P010/I010 to YUY2/UYVY/NV12/I420 on GEN9

With the new shader, the driver can convert 10bit surface to 8bit
surface in a single step

This fixes https://github.com/01org/intel-vaapi-driver/issues/212

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoUpdate the P010/I010 shader on GEN9
Xiang, Haihao [Thu, 3 Aug 2017 05:54:10 +0000 (13:54 +0800)]
Update the P010/I010 shader on GEN9

This fixes the conversion from I010 to P010

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoReturn UYVY format for vaQuerySurfaceAttributes
Xiang, Haihao [Wed, 9 Aug 2017 03:01:33 +0000 (11:01 +0800)]
Return UYVY format for vaQuerySurfaceAttributes

The driver supports UYVY surface, but UYVY is missed in
vaQuerySurfaceAttributes.

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoUse single GPE context for the optimization for 8bit/10bit scaling/CSC
Xiang, Haihao [Fri, 4 Aug 2017 01:30:45 +0000 (09:30 +0800)]
Use single GPE context for the optimization for 8bit/10bit scaling/CSC

The interface description table can used for multiple kernels and we can
use interface offset to specify the used kernel

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoTry the fast path of CSC/scaling first in va{Get,Put}Image()
Xiang, Haihao [Wed, 2 Aug 2017 02:20:35 +0000 (10:20 +0800)]
Try the fast path of CSC/scaling first in va{Get,Put}Image()

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoFactor out CSC/scaling in the fast path
Xiang, Haihao [Fri, 28 Jul 2017 06:10:29 +0000 (14:10 +0800)]
Factor out CSC/scaling in the fast path

The factored-out code will be re-used for va{Get,Put}Image()
implementation

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>