Commit graph

164 commits

Author SHA1 Message Date
Chia-I Wu
83b64ff054 graphics: ignore/reduce spurious vsync in VTS
Bug: 62802718
Test: VTS
Change-Id: I1ed73e0b2f14414f540865a96e6bd5ac1599fbf3
(cherry picked from commit e0ff3e4a26)
2017-09-01 15:40:05 -07:00
Fabien Sanglard
11ec393689 Skip Validate
b/37474580
b/62806392

Test: marlin, ryu

Change-Id: I9d4ece40a8a093d768bcb4edd332cf0188735e66
2017-06-22 04:48:33 +00:00
Steven Moreland
76cfb84140 Update makefiles. (2/2)
Adds default configuration for all hals.

Bug: 38415912
Test: pass
Change-Id: Idd1f3a2b7b16ad956d31784a513e93a066cdd02e
2017-05-19 15:54:03 -07:00
Chia-I Wu
ec71f00148 graphics: set maxThreads to 4 for the composer
There are implmentations that can dead lock when calling certain
functions in certain states.  It works fine before HIDL because
SurfaceFlinger calls those functions in another thread.  We allow
for 4 hwbinder threads in this commit to simulate how SurfaceFlinger
calls hwcomposer.

Bug: 38183197
Test: camera, videos, multi windows, screencap, screenrecord
Change-Id: Ie05b2ca349b8c1ed9a3ac962981434f2efee92d9
2017-05-12 08:40:48 -07:00
Steven Moreland
4be51a8512 Merge changes from topic 'fix-hidl-generate' into oc-dev
* changes:
  Update makefiles for c++-sources and c++-headers.
  Update makefiles for c++-sources and c++-headers. (2/2)
2017-05-10 20:02:40 +00:00
Steven Moreland
bc71124120 Update makefiles for c++-sources and c++-headers. (2/2)
Test: pass
Bug: 38174080
Change-Id: Icad451f9f9ad5f46412356a4171a8a1222f8e545
2017-05-09 19:58:43 -07:00
Martijn Coenen
f9b3fb49df Start processes that need real-time with CAP_SYS_NICE.
Bug: 37293077
Test: verified CAP_SYS_NICE granted in /proc/pid/status
Change-Id: If404450cbeb077d331b231bda1af2d6eae774b75
2017-05-09 09:57:00 -07:00
Steven Thomas
6dbaf573a2 Merge "Avoid crash when setting buffer on deleted layer" into oc-dev 2017-05-02 17:47:24 +00:00
Steven Thomas
58da77ea4b Avoid crash when setting buffer on deleted layer
When setLayerBuffer() was called on a layer previously destroyed by
destroyLayer() the code would crash. Instead, return an error.

Bug: 37159844

Test: Ran vr flinger in a way that would trigger the crash, and
confirmed that I now get error logs instead of crashing. Unfortunately
the error code is consumed by the Composer wrapper class and not
propagated back to the caller, but that's a separate issue (b/37901601).

Change-Id: I75a5b954d47a1deac44d03851f60f347085eca89
2017-05-02 17:39:39 +00:00
TreeHugger Robot
76061d7881 Merge "graphics: polish Transform docs and indent ColorMode" into oc-dev 2017-05-01 21:09:37 +00:00
Chia-I Wu
b57dd2a005 graphics: remvoe -Wno-unused-parameter
Bug: 34611192
Test: builds
Change-Id: I8d6802ee6c618ea506fcca8e7d74e3b7026f29be
2017-04-28 13:04:49 -07:00
Chia-I Wu
4376069e9d graphics: polish Transform docs and indent ColorMode
Note, current.txt change (as opposed to addition) is only allowed
because this is an unreleased interface.

Bug: 32593292
Test: builds
Change-Id: I95381d1a3a456aeadbc472e2dbbffde19cb43e6c
2017-04-28 13:04:08 -07:00
Chia-I Wu
8de7a17b82 graphics: remove non-HAL pixel formats
HALs are not expected to see YCBCR_422_888, YCBCR_444_888,
FLEX_RGB_888, and FLEX_RGBA_8888.  JPEG is purely wrong.

Note, current.txt change (as opposed to addition) is only allowed
because this is an unreleased interface.

Bug: 32593292
Test: builds
Change-Id: I432e6cb75cfc347a41e8e1632ae1898eed3350c8
2017-04-27 16:55:47 +00:00
Chia-I Wu
00d459d039 graphics: clean up PixelFormat docs
Make the docs more self-contained, not referring to stuff not
defined by the HIDL interfaces.

Mark JPEG, YCBCR_422_888, YCBCR_444_888, FLEX_RGB_888,
FLEX_RGBA_8888 as "MUST NOT USE".  These format are never supposed
to be seen by gralloc and do not belong to the HIDL interfaces.

Note, current.txt change (as opposed to addition) is only allowed
because this is an unreleased interface.

Bug: 32593292
Test: builds
Change-Id: Ia7607cc73dd2f58dfa27e71b0004b21c7ca6904d
2017-04-27 16:54:32 +00:00
Chia-I Wu
841468ad6a graphics: reorder PixelFormat
Sort the enum values in their numerical order. There is no other
change.

Note, current.txt change (as opposed to addition) is only allowed
because this is an unreleased interface.

Bug: 32593292
Test: builds
Change-Id: I47914a7971f922f5602f982b41dd7602842e853b
2017-04-27 16:41:08 +00:00
Chia-I Wu
2ae85702f7 graphics: use mapper from the composer
We must use the mapper HAL instead of gralloc0/gralloc1 from the
composer.

Bug: 37540361
Test: boots on marlin, angler, and ryu
Change-Id: I5a3ff6a025bf51a3507a4f33fa77e9506a6f1ec9
2017-04-25 12:52:50 -07:00
Chia-I Wu
ec74596af8 graphics: clarify importBuffer and passthrough HALs
A buffer handle recieved from a HAL is by definition raw and needs
to be imported.  But because of passthrough HALs, such a raw handle
may have been imported already.  Explicitly specify that an
implementation must accept such a raw handle.

Bug: 37540361
Test: boots on angler, ryu and marlin
Change-Id: I5ecf526e59b27cc4a8f7f5d5ec27477da0946ece
2017-04-25 12:52:50 -07:00
Chia-I Wu
78b63dc6a1 graphics: keep mapper valid during process termination
GraphicBufferMapper is valid during process termination.  IMapper
must stay valid as well.  It should not rely on global/static
objects that may have been destructed.

Bug: 37480313
Test: libgui_test
Change-Id: Icb8079153306f2465c26c0f1ce812895ad83f21b
2017-04-19 11:47:25 -07:00
Andreas Huber
6fa374ad30 Changed the naming scheme for Treble java libraries (both static and dynamic)
android.hardware.foo@1.0-java => android.hardware.foo-V1.0-java

Bug: 37207894
Test: make
Change-Id: I177f4cfd42f635aaf096107af8309d1a82ed41c0
Merged-In: I8b91881dfaf507c0d852d56ebbb53ff0987e5a34
2017-04-13 15:23:46 -07:00
TreeHugger Robot
cb1d509d21 Merge "libhwcomposer-client: mark as vendor_available" into oc-dev 2017-04-13 04:12:19 +00:00
Iliyan Malchev
f140afe383 composer: route binder traffic over vndbinder
b/36683636 Hwcomposer is starting binder threads

Test: sailfish

Change-Id: I28ad19b5036c6fbf514770369888ca11892bf212
Signed-off-by: Iliyan Malchev <malchev@google.com>
2017-04-13 00:25:08 +00:00
Steven Moreland
17f0c0dde7 Merge changes from topic 'hidl-vendor-available' into oc-dev
* changes:
  Update makefiles (2/2).
  Update makefiles.
2017-04-12 22:13:58 +00:00
Brian C. Anderson
21c2e11345 Merge "Add PRESENT_FENCE_IS_NOT_RELIABLE" into oc-dev 2017-04-12 21:26:24 +00:00
Brian Anderson
9af5d942a6 Add PRESENT_FENCE_IS_NOT_RELIABLE
Test: adb shell /data/nativetest/libgui_test/libgui_test
  --gtest_filter=*GetFrameTimestamps*
Bug: 36730849, 36887025

Change-Id: Ide992e4dda7840f7982237943256ea3019eda434
2017-04-12 11:28:55 -07:00
Steven Moreland
fed12441ac libgrallocmapperincludes: as header lib and vendor
Bug: 33241851
Test: links
Test: try build with BOARD_VNDK_VERSION current, no errors related to
  this module
Test: (sanity) YouTube

Change-Id: Ia2c3922bf8bf1ab51396a8c8c5fa8d909c442994
2017-04-12 09:57:32 -07:00
Steven Moreland
1c8bff2ccb libhwcomposer-client: mark as vendor_available
By setting vendor_available, the following may become true:

* a prebuilt library from this release may be used at runtime by
  in a later releasse (by vendor code compiled against this release).
  so this library shouldn't depend on runtime state that may change
  in the future.
* this library may be loaded twice into a single process (potentially
  an old version and a newer version). The symbols will be isolated
  using linker namespaces, but this may break assumptions about 1
  library in 1 process (your singletons will run twice).

Background:

This means that these modules may be built and installed twice --
once for the system partition and once for the vendor partition. The
system version will build just like today, and will be used by the
framework components on /system. The vendor version will build
against a reduced set of exports and libraries -- similar to, but
separate from, the NDK. This means that all your dependencies must
also mark vendor_available.

At runtime, /system binaries will load libraries from /system/lib*,
while /vendor binaries will load libraries from /vendor/lib*. There
are some exceptions in both directions -- bionic(libc,etc) and liblog
are always loaded from /system. And SP-HALs (OpenGL, etc) may load
/vendor code into /system processes, but the dependencies of those
libraries will load from /vendor until it reaches a library that's
always on /system. In the SP-HAL case, if both framework and vendor
libraries depend on a library of the same name, both versions will be
loaded, but they will be isolated from each other.

It's possible to compile differently -- reducing your source files,
exporting different include directories, etc. For details see:

https://android-review.googlesource.com/368372

None of this is enabled unless the device opts into the system/vendor
split with BOARD_VNDK_VERSION := current.

Bug: 36426473
Bug: 36079834
Test: m -j libhwcomposer-client
Test: attempt to compile with BOARD_VNDK_VERSION := current
Change-Id: I735b861fcc25bc1048ce0ce3ad48432980248b06
2017-04-12 04:29:48 +00:00
Steven Moreland
3b36a83a2e Update makefiles (2/2).
Test: pass
Change-Id: Ic7e6289c7b69785491708ce0acbb657f4c704229
2017-04-11 09:58:03 -07:00
Chia-I Wu
586fd648d5 Merge "graphics: revise gralloc interfaces" into oc-dev 2017-04-11 01:08:39 +00:00
Chia-I Wu
79d13ff0f5 graphics: revise gralloc interfaces
Revise IAllocator and IMapper to reduce IPC and to support gralloc0
devices.

Specifically, IAllocator is trimmed down to have essentially only

    allocate(BufferDescriptor descriptor, uint32_t count)
        generates (Error error,
                   uint32_t stride,
                   vec<handle> buffers);

The ability to allocate buffers with shared backing store is
removed.  ProducerUsage and ConsumerUsage are moved to the
graphics.common package and are merged and renamed to BufferUsage.
BufferUsage's bits follow gralloc0.

IMapper gains

    typedef vec<uint32_t> BufferDescriptor;
    createDescriptor(BufferDescriptorInfo descriptorInfo)
          generates (Error error,
                     BufferDescriptor descriptor);

where BufferDescriptor is an implementation-defined blob.  lockFlex
is replaced by lockYCbCr.  All getters are removed.

Reference counting with retain/release is replaced by
importBuffer/freeBuffer.

Most if not all gralloc1 features are not used by the runtime yet.
There is also not too much test written for them.  As such, they
tend to behave differently between implementations and cannot be
used reliably.

Bug: 36481301
Test: builds and boots on Pixel
Change-Id: I1d31105120517ea2c128c7a19297acf3bfd312bb
2017-04-10 11:15:54 -07:00
Emilian Peev
cb0b46654d graphics: Update RAW16 format comments
RAW16 format could be used together with depth dataspace.
The buffer contents in this case will be phase detection
statistics data.

Bug: 36015382
Test: testPDStats
Change-Id: Ied1c179193abef62a87fcec6f0906528ed58ea2b
(cherry picked from commit 23699d6314)
2017-04-09 17:48:56 +00:00
Steven Moreland
4e7a307730 Fix transitive includes.
Files relying on transitive include of utils/Log.h (and things that it
includes) from MQDescriptor.h

Test: pass
Merged-In: Iff316b21bef556bb026378b7f89e97ded3febef4
Change-Id: Iff316b21bef556bb026378b7f89e97ded3febef4
2017-04-06 22:04:05 +00:00
Keun-young Park
a232a45b59 add components necessary for bootanim to animation class
- necessary for running shutdown animation:
 android.hardware.graphics.composer
 android.hardware.graphics.allocator
 android.hardware.configstore

bug: 36526187
Test: many reboots
Change-Id: Iba3eefddd2bd33c28152c17081a4ad13619d330d
2017-03-31 16:56:08 -07:00
Andreas Huber
40d3a9bd8c Convert all comments into "doxygen-ready" comments.
Bug: 36453077
Test: mma
Change-Id: I0b1f77dfae5d2258969e33d85ecf45401ffbdfaa
2017-03-29 08:53:58 -07:00
TreeHugger Robot
2f44ec6c86 Merge "Use gralloc usage conversion library" into oc-dev 2017-03-28 20:55:51 +00:00
Jesse Hall
66ee1771a6 Use gralloc usage conversion library
Converting from ..graphics.allocator@2.0 usage to gralloc0 usage isn't
quite as simple as ORing and truncating, which is what the default
implementation was doing. Switch to using library functions that do it
correctly.

Test: boot bullhead
Change-Id: I40ae00e9aad92b374f281569207972b7461a3e55
2017-03-28 08:23:21 -07:00
Steven Moreland
561b602a99 Update makefiles for hwtypes.h
Test: pass
Change-Id: I8e17eb8fec5d2f04c526476a866c8dd54ccb556c
2017-03-28 15:18:20 +00:00
Steven Moreland
c8e2b3f7c5 Remove viral readproc group dependency.
This has been copy pasted and isn't actually required.

Test: all hals manually tested to work on internal marlin (which have them binderized).
  Note: tv hals not tested (and they never have been). Filed b/36562029
  Note: for thermal hal, could only run VTS/check logs for errors.
Test: lshal outputs proper stuff
Fixes: 31928447
Change-Id: Id1be584dc0fa2d70e9189b922335146bf6d1382d
2017-03-23 19:49:37 +00:00
Fabien Sanglard
9b117a4dd2 Fix library dependency, remove undeclarate deps
Remove undeclared dependency of libhwcomposer-client on Hwc.h which
created a circular dependency.

Test: Manual
Change-Id: I74d5c4e2db5d247f8b406d1ea42fece41e76659d
2017-03-21 09:43:36 -07:00
Fabien Sanglard
0d55a21044 Add graphics composer support for HWC > HWC1.1
Test: Ryu, Marlin
Change-Id: I58a7394f427534b942d64c93b1891a756c5f510c
2017-03-20 12:24:29 -07:00
TreeHugger Robot
52efd43eee Merge "Move IGraphicBufferProducer to graphics/bufferqueue." 2017-03-15 20:55:46 +00:00
Pawin Vongmasa
4a3cd13ddc Move IGraphicBufferProducer to graphics/bufferqueue.
Test: With CtsMediaTestCases.apk installed,
adb shell am instrument -e size small -w
'android.media.cts/android.support.test.runner.AndroidJUnitRunner'

Bug: 35442034
Change-Id: Ia1ef0eb069fcd97f7afcf42bf3bb16c8c6a752c4
2017-03-15 11:42:40 -07:00
Courtney Goeltzenleuchter
a3023d9b44 Update Display-P3 transfer function
Decided to use same transfer function that Apple is
using for their Display-P3 devices. Difference between
sRGB transfer function and Display-P3 is very small.
We will treat them an synonymous.

Test: make

Change-Id: Id4e52058f2b810b70c46821c5fe6830e623c5491
2017-03-15 08:11:25 -06:00
Yuexi Ma
ed2bb4e8f8 Change vts target base test class name
Test: make vts succeed, vts kernel tests and nfc hal tests passed
Change-Id: I95f10ad7a66f261c9030357edd411fe6d94150e8
2017-03-10 21:14:48 +00:00
TreeHugger Robot
88cfac9540 Merge "graphics: fix a potential use after free" 2017-03-10 20:51:48 +00:00
TreeHugger Robot
d46602235b Merge "graphics: really reset HWC2 on SF crashes" 2017-03-10 20:42:39 +00:00
Chia-I Wu
41a1c15a40 graphics: fix a potential use after free
We cannot lookup _and_ update buffer cache entry in lookupBuffer.
The old buffer is still in use by hwcomposer2.  Add updateBuffer to
do the update after the new buffer has replaced the old buffer in
hwcomposer2.

While at it, s/BufferClone/BufferCacheEntry/g.

Bug: 36064845
Test: manual
Change-Id: I59b61c0198ad528c40020fdebbe27a6cc359226f
2017-03-10 10:53:32 -08:00
Chia-I Wu
6c84f7ee8c graphics: really reset HWC2 on SF crashes
Perform a final presentDisplay to clear the screen and get HWC2 out
of any special state (e.g., some implementations put themselves in
special states between validateDisplay and presentDisplay).  Our
only portable choice really is to abort(), but that is not an option
because we have other clients such as VTS or VR.

Bug: 35872161
Test: manual
Change-Id: I9028705607d1b86d418a379c6e90e833d638b3f5
2017-03-09 09:20:11 -08:00
Steven Moreland
48c52249e4 hidl_default to all targets.
find hardware/interfaces -type f -not -path "*/.git/*" \
-exec sed -i -e '/cc_[A-Za-z_]\+/ { N; s/$/\n    defaults:
\["hidl_defaults"\],/ }' {} \;
./hardware/interfaces/update-makefiles.sh

Test: pass
Bug: 35840847
Change-Id: If10c464d2f000b85c8d698fe11a4f3fc4cfad282
2017-03-08 19:31:53 -08:00
Chia-I Wu
d412d7b1d2 graphics: initialize count to 0 in initCapabilities
Be more defensive against HALs that do not initialize count.

Test: manual
Change-Id: I8b70454a1a3134c01d225be504579fc2e81ca88b
2017-03-07 14:45:33 -08:00
Chia-I Wu
c2e949ec5f graphics: add a basic test for IMapper::lockFlex
Bug: 32023011
Test: manual
Change-Id: Iae143d11056f6ab169d1068fdaa62e889051b16e
2017-03-07 12:26:03 -08:00