Commit Graph

2059 Commits

Author SHA1 Message Date
Mathias Agopian
d2d5a64aa2 workaround a deadlock when taking screenshots into a surface
When disconnecting from BufferQueue, we now drain the queue
except the head (which means in the screenshot case we won't
have to block, but we might not have a buffer to show, this
will appear as an error in the log).

Bug: 8362363
Change-Id: If80989aac3c917beea2ebddf3cbb502849d394da
2013-03-11 17:59:59 -07:00
Romain Guy
dbca4a0ee5 Merge "Add Thread::isRunning and Condition::signal(WakeUpType)" into jb-mr2-dev 2013-03-11 21:38:26 +00:00
Romain Guy
9447be65c3 Add Thread::isRunning and Condition::signal(WakeUpType)
The signal() method is useful to choose whether to wake up one or
all threads.

Change-Id: I062ab6d3ddd306a9fb735549ea140e2a76eed75a
2013-03-11 14:34:56 -07:00
Mathias Agopian
7589b2a797 add two libgui tests
we check that the order in which we destroy GLConsumer wrt.
releasing the corresponding EGLSurface via eglMake(Un)Current
doesn't leak a buffer.

On at least 2 devices this test doesn't pass.

Change-Id: I63ab83951b4b0a977f38571158f948cbd9dc7cec
2013-03-08 13:22:03 -08:00
Mathias Agopian
e3e43b384e rename binder services main thread to Binder_*
When a binder service's main thread joins the thread pool
it retains its name (whatever the exec name was), which is
very confusing in systrace.

we now rename that thread just like its friends in the
thread pool.

Change-Id: Ibb3b6ff07304b247cfc6fb1694e72350c579513e
2013-03-07 15:34:28 -08:00
Mathias Agopian
dbf146f1d6 Fix RefBase debugging. O_CREAT must specify the mode.
Change-Id: I51c6df3cfd59b20ca73c3edee86bc2f74dbde1b1
2013-03-06 17:52:34 -08:00
Igor Murashkin
f082323c0d Merge "CpuConsumer_test: Extend test with new formats RGBA8888 and optional Y8/Y16" into jb-mr2-dev 2013-03-05 21:58:00 +00:00
Igor Murashkin
29e2047cb4 CpuConsumer_test: Extend test with new formats RGBA8888 and optional Y8/Y16
Change-Id: I0a0f6ce73516883bf50c749a1759abbdb3748e08
2013-03-05 13:55:31 -08:00
Mathias Agopian
306f18c5fb Merge "rework screenshot API and implementation" into jb-mr2-dev 2013-03-05 02:30:13 +00:00
Jesse Hall
006a601f22 Fix reading NULL Surfaces from Parcels
Writing a NULL Surface was being read as a non-NULL Surface with NULL
mGraphicBufferProducer. Before the SurfaceTextureClient -> Surface
refactoring, you'd get a NULL Surface, and some code relies on that.

Bug: 8291161
Change-Id: I477bfe8882693e53a5f604a3d2c9e3cfe24473b4
2013-03-02 20:06:42 -08:00
Mathias Agopian
2a9fc493df rework screenshot API and implementation
- SurfaceFlinger now supports to take a screenshot
  directly into an IGraphicBufferProducer

- reimplement the IMemoryHeap screenshot on top
  of the above

- reimplement LayerScreenshot such that its
  BufferQueue is directly used as the destination
  of the screenshot. LayerScreenshot is now a thin
  wrapper around Layer

Bug: 6940974

Change-Id: I69a2096b44b91acbb99eba16f83a9c78d94e0d10
2013-03-01 22:53:39 -08:00
Dave Burke
bbb57f3331 Revert "Change SurfaceControl setPosition to take floats"
Temporary, to fix weekend build, until we get Nvidia code drop.

This reverts commit 9a867a8798

DO NOT MERGE

Change-Id: I7b5dbc4db46ef3d97dc8598057d5487d6971178b
2013-03-01 16:06:48 -08:00
Eino-Ville Talvala
eb0d12963d CpuConsumer: Add optional asynchronous mode
Bug: 8290146
Bug: 8291751

Change-Id: I9c8ac4bff38b0411e987a204e540d018dba6d0b4
2013-02-28 15:51:24 -08:00
Eino-Ville Talvala
64d8b1903e CpuConsumer: Don't unlock buffers on producer disconnect
Bug: 8291751

Change-Id: I062a3d34b41183d07fb6b9109cdb6bf0c0c75672
2013-02-28 14:20:28 -08:00
Chris Craik
3e010f3138 Add createTJunctionFreeRegion
T-junction free regions are useful for rendering regions with various
geometric transformations, and the Region's span-ordered, sorted rect
list supports T-junction free storage without modification.

This approach creates a T-junction free region by splitting each
rectangle that is part of a vertical T-junction. This approach is two
pass (up and down) so that divisions can trickle up/down to other
adjacent spans.

Change-Id: Ifcf5e6fe0034c96b00ef09a4433b2b0fce8f4300
2013-02-27 11:13:03 -08:00
Mathias Agopian
993e14fe10 Added a test that checks the error behavior of ConsumerBase::abandon
We check that calling eglSwapBuffers() on an abandonned BufferQueue
return EGL_BAD_SURFACE -- this is to ensure consistancy between
drivers.

Change-Id: Ibb548e0cf767ceee69f2fc4a85811d15a6522277
2013-02-25 16:51:31 -08:00
Michael Wright
9a867a8798 Change SurfaceControl setPosition to take floats
Bug: 8153162
Change-Id: If3c4b7a3e124ace25999eb9a569dc9a806a1fbc2
2013-02-21 22:42:07 -08:00
Mathias Agopian
a7121cf44b Merge "get rid of Surface::getISurfaceTexture()" 2013-02-21 23:23:21 +00:00
Mathias Agopian
cf0b8c85fb get rid of Surface::getISurfaceTexture()
this was there just for legacy reasons.

Change-Id: I0a48d6e04d7efa65033f9f10c91bba557f16ae8b
2013-02-19 18:24:40 -08:00
Eino-Ville Talvala
e88a85e0d0 Fixes to native app ops services
Bug: 8181262
Change-Id: I3d3f20453f6c6f2756c988363c5b5453ef309cb6
2013-02-19 18:10:05 -08:00
Mathias Agopian
e3c697fb92 Refactoring: Rename SurfaceTextureClient to Surface
Change-Id: Ibed34175ae273608393aaa5f0a7df207dc40d709
2013-02-14 19:19:05 -08:00
Mathias Agopian
ac9fa427d4 get rid of Surface identity and token
we use the IBinder instead.

Change-Id: I4aa0b58869ba43f19980013620051e5a261b062d
2013-02-13 15:27:08 -08:00
Jamie Gennis
b997f6ef0f Merge changes I50831d4e,I5360aebe
* changes:
  flatland: remove an unneeded #include
  libgui: disallow NULL Fence pointers
2013-02-13 23:22:04 +00:00
Jamie Gennis
1df8c34585 libgui: disallow NULL Fence pointers
This change eliminates the uses of a NULL sp<Fence> indicating that no waiting
is required.  Instead we use a non-NULL but invalid Fence object for which the
wait methods will return immediately.

Bug: 7892871
Change-Id: I5360aebe3090422ef6920d56c99fc4eedc642e48
2013-02-12 18:15:38 -08:00
Dianne Hackborn
5da5ca520c App ops: new native access API.
This is to help implementation of bug #8181262 and maybe
bug #8181261

Note the current code has not yet been tested; it is only
known to compile at this point.

Change-Id: I489674c96d0d3fc0ddacc92611931a19a9ee5230
2013-02-12 15:13:37 -08:00
Nick Kralevich
c4fd05b172 Revert "try to fix win_sdk build."
A better change was checked into system/core. See commit
941daef629bd571032851edf7ae1dce24266640e

This reverts commit fa99d30ec7.
2013-02-02 18:09:15 -08:00
Nick Kralevich
fa99d30ec7 try to fix win_sdk build.
Change-Id: I55e78e339874a6d6a3381c2550556b65c7ec1ca0
2013-02-01 16:09:23 -08:00
Jesse Hall
7c36cd2315 Fix memory leak when getting signal time for unsignaled fences
Bug: 8000983
Change-Id: Ie88ed23fc5e8c95bfade364e090e90b7f070fa8e
2013-01-14 16:33:29 -08:00
Andy McFadden
466a192d20 Minor tweaks.
Change-Id: I9f82f574112141b6aa074c42303056cd52d5c478
2013-01-08 11:25:51 -08:00
Andy McFadden
2adaf04fab Rename ISurfaceTexture and SurfaceTexture
The C++ class names don't match what the classes do, so rename
ISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to
GLConsumer.

Bug 7736700

Change-Id: Ia03e468888025b5cae3c0ee1995434515dbea387
2012-12-18 13:10:48 -08:00
Marco Nelissen
cce6230b3c Merge "Add NULL check to CallStack::toString" 2012-12-17 13:42:05 -08:00
Marco Nelissen
32130635f6 Add NULL check to CallStack::toString
CallStack::toString() has a 0 default argument, which ends up getting
passed to strlen(), resulting in a crash.

Change-Id: If706aff8c400983670f49cdbb66e11191ac76e0e
2012-12-17 10:28:20 -08:00
Jamie Gennis
c911ea5318 stop using a deprecated SurfaceTextureClient ctor
Change-Id: I8c8282a0debd551db290dd6849faf272a88c704c
2012-12-12 12:38:36 -08:00
Jamie Gennis
3c1ada9822 Merge "SurfaceTextureClient: remove a deprecated ctor" 2012-12-12 12:16:21 -08:00
Jamie Gennis
4def860030 SurfaceTextureClient: remove a deprecated ctor
Change-Id: Ibf2746fdca26851677cd90199c60eab80f6d0c73
2012-12-12 12:13:54 -08:00
Jamie Gennis
c6f04666c2 Merge "SurfaceFlinger: Move GraphicBufferAlloc to libgui" 2012-12-12 10:56:42 -08:00
Jamie Gennis
392edd88cb SurfaceFlinger: Move GraphicBufferAlloc to libgui
This change moves the GraphicBufferAlloc class from SurfaceFlinger to libgui.

Change-Id: Idf31d2004efa2651b60590733f73c4a7b831e8a9
2012-12-11 17:54:29 -08:00
Andy McFadden
97eba8904c Avoid unnecessary texture bind
In SurfaceFlingerConsumer, check to see if native fence sync is
enabled.  If so, defer the texture binding step to Layer::onDraw.

Change-Id: I7d4034a31c0143207eea2509dfa13ef3820f9b8c
2012-12-11 16:26:51 -08:00
Andy McFadden
bf974abe92 Refactor SurfaceTexture a bit.
Rearranges updateTexImage() so that the SurfaceFlinger-specific
behavior is in a new SurfaceFlingerConsumer subclass.

SurfaceTexture behavior should not be altered.  Instead of
acquire-bind-release we now do acquire-release-bind, but since
it's all done with the lock held there shouldn't be any
externally-visible change.

Change-Id: Ia566e4727945e2cfb9359fc6d2a8f8af64d7b7b7
2012-12-11 09:42:51 -08:00
Jamie Gennis
a436799668 am 50f8d285: am d4e70620: am 72c3f7d8: Revert "ConsumerBase: free buffers outside the lock"
* commit '50f8d2856b6644059b31684687842bf9c1f2e814':
  Revert "ConsumerBase: free buffers outside the lock"
2012-12-07 11:09:12 -08:00
Jamie Gennis
50f8d2856b am d4e70620: am 72c3f7d8: Revert "ConsumerBase: free buffers outside the lock"
* commit 'd4e706208c99ff1716fb0009ec867ff29ff04a7c':
  Revert "ConsumerBase: free buffers outside the lock"
2012-12-07 11:07:03 -08:00
Jamie Gennis
7df16644c4 am 2d659286: am 2e59d2c3: DO NOT MERGE GraphicBufferAllocator: make frees async
* commit '2d659286b59dc7ff7378fe967f1c425e92155995':
  DO NOT MERGE GraphicBufferAllocator: make frees async
2012-12-07 10:59:29 -08:00
Jamie Gennis
72c3f7d881 Revert "ConsumerBase: free buffers outside the lock"
This reverts commit b21a4e3b5f.
2012-12-07 10:33:07 -08:00
Jamie Gennis
2e59d2c3fd DO NOT MERGE GraphicBufferAllocator: make frees async
This change makes GraphicBufferAllocator::free queue a job to another thread to
perform the actual free operation.  This prevents potentially slow free
operations from blocking rendering.

Bug: 7675940
Change-Id: Id61099d66bb4c3949d04184e0d7f192ac18076b4
2012-12-07 10:32:13 -08:00
Jamie Gennis
b5fe96b813 am 05989772: am 3ed2736c: am b21a4e3b: ConsumerBase: free buffers outside the lock
* commit '05989772d5b46cd5328e88d546f04deef39cc3c8':
  ConsumerBase: free buffers outside the lock
2012-12-06 23:24:25 -08:00
Jamie Gennis
05989772d5 am 3ed2736c: am b21a4e3b: ConsumerBase: free buffers outside the lock
* commit '3ed2736c10efb2f18062591e308036837d9725a4':
  ConsumerBase: free buffers outside the lock
2012-12-06 19:00:57 -08:00
Jamie Gennis
b21a4e3b5f ConsumerBase: free buffers outside the lock
This change makes ConsumerBase::onBuffersReleased hold a reference to all its
gralloc buffers until after the mutex is unlocked.  This prevents slow
gralloc::free calls from causing lock contention with rendering threads.

Bug: 7675940
Change-Id: I0ec805d1b612afeeecfffec03f982371d27d93be
2012-12-06 18:17:35 -08:00
Chris Craik
0a73f822b1 Add LinearAllocator
Moving from external/webkit/Source/WebCore/platform/graphics/android/utils/

Change-Id: If91830aa9b207dbc8692b2ca7c4a0b76778addd5
2012-12-05 17:34:54 -08:00
Alex Ray
653078f652 utils: clarify scoped tracing functionality
ScopedTrace objects were being used in place of ATRACE_NAME because of a
misunderstanding of it's function.  Cleared up documentation for usage.

Also explicitly use global namespace for sysprop callback.

Change-Id: I7c248b486b614ccdb841659ca0dcfc644fda670a
2012-11-30 19:54:00 -08:00
Alex Ray
b7e06477f0 utils: Use cutils tracing functionality.
Tracing functionality has moved to cutils.

Change-Id: Ie78ccc1d59dd5178f5058fbc3858a37f9adce552
2012-11-29 13:33:14 -08:00