OSDN Git Service

android-x86/hardware-intel-common-vaapi.git
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>
6 years agowayland: Implement registry remove handler
Philipp Kerling [Tue, 15 Aug 2017 08:52:54 +0000 (10:52 +0200)]
wayland: Implement registry remove handler

Wayland event handlers are never optional. libwayland-client will abort
the program if events for unbound handlers are to be dispatched.
Although the event queue is only dispatched a few times during
initialization for getting the wl_drm global and authenticating the DRM
device, in rare circumstances it can happen that another global such as
a wl_output - or even wl_drm itself - is removed during that time, which
would crash the program. Implement the handler to fix this.

Signed-off-by: Philipp Kerling <pkerling@casix.org>
6 years agoMerge branch 'v1.8-branch' into master
Xiang, Haihao [Wed, 16 Aug 2017 06:47:36 +0000 (14:47 +0800)]
Merge branch 'v1.8-branch' into master

6 years agotest: fix AVCEContextTest/RateControl regression nougat-x86 android-x86-7.1-r1 android-x86-7.1-r2 android-x86-7.1-r3 android-x86-7.1-r4 android-x86-7.1-r5
U. Artie Eoff [Thu, 10 Aug 2017 18:23:57 +0000 (11:23 -0700)]
test: fix AVCEContextTest/RateControl regression

Update AVCEContextTest/RateControl expectations that changed
since PR #197

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agotest: add status expectation in I965TestFixture::createConfig
U. Artie Eoff [Thu, 10 Aug 2017 18:21:19 +0000 (11:21 -0700)]
test: add status expectation in I965TestFixture::createConfig

Add VAStatus parameter to I965TestFixture::createConfig to allow
users to pass in the expected status for testing.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoavoid NULL pointer deref in i965_CreateConfig
U. Artie Eoff [Thu, 10 Aug 2017 18:15:57 +0000 (11:15 -0700)]
avoid NULL pointer deref in i965_CreateConfig

The attrib_found pointer variable might be NULL in many cases.
Thus, check it before attempting to dereference it.

Fixes #246

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
6 years agoadd brc mode check for AVC when creating the config
Pengfei Qu [Thu, 8 Jun 2017 09:55:17 +0000 (17:55 +0800)]
add  brc mode check for AVC when creating the config

v0:this add the RC check for AVC encoder

Fixes #35

Signed-off-by: Pengfei Qu <Pengfei.Qu@intel.com>
6 years agoVAEncROI on GEN7 chipset fix
Guilherme [Tue, 25 Jul 2017 15:34:41 +0000 (12:34 -0300)]
VAEncROI on GEN7 chipset fix

Copying line intel_h264_enc_roi_config() from gen75_vme.c to gen7_vme.c

6 years agoAdd the configure attributes of EncMaxRefs for GEN9 HEVC encoder
peng.chen [Tue, 8 Aug 2017 06:11:27 +0000 (14:11 +0800)]
Add the configure attributes of EncMaxRefs for GEN9 HEVC encoder

Fixes #200

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoDo not apply AUD hack to non-RawData headers
Mark Thompson [Sat, 29 Jul 2017 20:24:10 +0000 (21:24 +0100)]
Do not apply AUD hack to non-RawData headers

Headers which are not VAEncPackedHeaderRawData should not be inserted
at the front of the access unit by the AUD hack - if they are, they will
end up duplicated if they match the test because they are also placed
later in the access unit.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agoUpdate new media kernels for HEVC encoder
peng.chen [Thu, 3 Aug 2017 07:23:19 +0000 (15:23 +0800)]
Update new media kernels for HEVC encoder

Fixes #240

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoCorrect the data type
Xiang, Haihao [Mon, 24 Jul 2017 06:25:37 +0000 (14:25 +0800)]
Correct the data type

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoDon't align the bitrate to 1000 for VDEnc AVC encoding
Xiang, Haihao [Fri, 21 Jul 2017 04:22:36 +0000 (12:22 +0800)]
Don't align the bitrate to 1000 for VDEnc AVC encoding

The HuC accepts the real bitrate setting

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoInitialize the HME mv cost table for VDEnc AVC encoding
Xiang, Haihao [Thu, 20 Jul 2017 08:26:58 +0000 (16:26 +0800)]
Initialize the HME mv cost table for VDEnc AVC encoding

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoadd VC-1 intensity compensation for SNB
carpalis [Wed, 26 Jul 2017 07:48:00 +0000 (09:48 +0200)]
add VC-1 intensity compensation for SNB

6 years agoimplement intensity compensation for VC-1 decoding
carpalis [Mon, 24 Jul 2017 11:21:16 +0000 (13:21 +0200)]
implement intensity compensation for VC-1 decoding

Intensity compensation was not present for B-frames, but only for P-frames. When a P-frame flags intensity compensation for its forward reference frame, all subsequent B-frames that use this reference frame as well, need to do intensity compensation as well.

6 years agotest: fix GCC 7.1.1 warnings/errors
Kelly Ledford [Thu, 27 Jul 2017 22:12:27 +0000 (15:12 -0700)]
test: fix GCC 7.1.1 warnings/errors

Fixes #236: add explicit braces to avoid 'ambiguous else' warning.

Signed-off-by: Kelly Ledford <kelly.ledford@intel.com>
6 years agoEncoder: Avoid memory leak
Xiang, Haihao [Fri, 14 Jul 2017 07:19:39 +0000 (15:19 +0800)]
Encoder: Avoid memory leak

An internal surface is created when the input surface doesn't meet the
HW requirement for encoding, however this surface is not destroyed when
the corresponding context is destroyed which causes the memory leak
issue. This patch fixes this issue.

This fixes https://github.com/01org/libyami/issues/751

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoRemove useless frame dimension check for VP9
Mark Thompson [Wed, 28 Jun 2017 23:41:21 +0000 (00:41 +0100)]
Remove useless frame dimension check for VP9

Signed-off-by: Mark Thompson <sw@jkqxz.net>
6 years agoDon't check the stride in the y direction for a single plane surface
Xiang, Haihao [Wed, 12 Jul 2017 01:44:11 +0000 (09:44 +0800)]
Don't check the stride in the y direction for a single plane surface

obj_surface->height is used to calculate the offset for U/V plane. for a
surface with single plane, the check is unnecessary

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

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
Reviewed-by: Daniel Charles <daniel.charles@intel.com>
Tested-by: Daniel Charles <daniel.charles@intel.com>
6 years agoAdd HEVC ROI attributes for VAConfigAttribEncROI
peng.chen [Tue, 20 Jun 2017 06:33:21 +0000 (14:33 +0800)]
Add HEVC ROI attributes for VAConfigAttribEncROI

Fixes #179

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoAdd the support of ROI for HEVC encoder on GEN9 SKL+
peng.chen [Tue, 20 Jun 2017 06:25:58 +0000 (14:25 +0800)]
Add the support of ROI for HEVC encoder on GEN9 SKL+

Fixes #179

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoParse ROI Misc parameters for CQP mode
peng.chen [Tue, 20 Jun 2017 06:18:05 +0000 (14:18 +0800)]
Parse ROI Misc parameters for CQP mode

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoUpdate media kernels for hevc encoder
peng.chen [Fri, 16 Jun 2017 05:16:48 +0000 (13:16 +0800)]
Update media kernels for hevc encoder

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agoFix VDENC_PIPE_BUF_ADDR_STATE for AVC VDEnc encoding
Xiang, Haihao [Wed, 12 Jul 2017 06:04:17 +0000 (14:04 +0800)]
Fix VDENC_PIPE_BUF_ADDR_STATE for AVC VDEnc encoding

DW22-DW27 are the first 2 reference surfaces in list0, not the down
scaling referece surfaces.

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

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agoEnc: add max ref number query for AVC encoder on SKL+
Pengfei Qu [Fri, 23 Jun 2017 01:54:36 +0000 (09:54 +0800)]
Enc: add max ref number query for AVC encoder on SKL+

Fixes #199

Signed-off-by: Pengfei Qu <Pengfei.Qu@intel.com>
6 years agoRemove generated file from tree and on clean
Philipp Kerling [Thu, 22 Jun 2017 07:46:38 +0000 (09:46 +0200)]
Remove generated file from tree and on clean

Signed-off-by: Philipp Kerling <pkerling@casix.org>
6 years agointel-vaapi-driver 1.8.3
Xiang, Haihao [Wed, 28 Jun 2017 00:27:07 +0000 (08:27 +0800)]
intel-vaapi-driver 1.8.3

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
6 years agowayland: Also support wl_drm version 1
Philipp Kerling [Tue, 20 Jun 2017 17:32:34 +0000 (19:32 +0200)]
wayland: Also support wl_drm version 1

Just using version 2 without checking would lead to a protocol error
bringing down the entire application, and wl_drm version 1 is still
supported since v2 only adds PRIME capabilities.

6 years agoFix the ROI bottom setting issue in vdenc
peng.chen [Thu, 15 Jun 2017 01:35:57 +0000 (09:35 +0800)]
Fix the ROI bottom setting issue in vdenc

Signed-off-by: peng.chen <peng.c.chen@intel.com>
6 years agowayland: Use private event queue for compositor communication
Philipp Kerling [Tue, 13 Jun 2017 11:39:27 +0000 (13:39 +0200)]
wayland: Use private event queue for compositor communication

(Ab)using the default queue that the application might itself use
already and work on in parallel to initializing libva is not
thread-safe. Make it thread-safe by setting a private queue on a
wrapped wl_display. Also print some more error messages in case things
go wrong.

Signed-off-by: Philipp Kerling <pkerling@casix.org>
Signed-off-by: Olivier Crete <olivier.crete@collabora.com>