| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| | |
Change-Id: I4317b34fd07890ea7cf9db51be42d72ef21aca89
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
this means they only have access to the consumer end of
the interface. we had a lot of code that assumed consumers
where holding a BufferQueue (i.e.: both ends), so most of
this change is untangling in fix that
Bug: 9265647
Change-Id: Ic2e2596ee14c7535f51bf26d9a897a0fc036d22c
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | | |
Bug: 9592202
Change-Id: I61a17758200e61adaca695b426db3df0f6637d4c
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
While currently untested, this should allow to move the
BuffereQueue in the consumer process and have everything
work as usual.
Bug: 9265647
Change-Id: I9ca8f099f7c65b9a27b7e7a3643b46d1b58eacfc
|
| |
| |
| |
| | |
Change-Id: I04df8ec96510b16e84054089f7c02609d8fe2b0c
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
we can now queue/dequeue a buffer in asynchrnous mode by using the
async parameter to these calls. async mode is only specified
with those calls (it is not modal anymore).
as a consequence it can only be specified when the buffer count
is not overidden, as error is returned otherwise.
Change-Id: Ic63f4f96f671cb9d65c4cecbcc192615e09a8b6b
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
we tag queued buffers with the "bufferqueue cannot block" flag
and use that bit to discard a buffer in the queue by new ones
comming in. this allows us to remove the buffer queue drain in
disconnect while maintaining the right behaviour if it gets
connected again (since each buffer remembers how it was enqueued).
Change-Id: I1e703d363a687b70b19ba49cef32213116e8bd3f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
this is the first step of a series of improvements to
BufferQueue. A few things happen in this change:
- setSynchronousMode() goes away as well as the SynchronousModeAllowed flag
- BufferQueue now defaults to (what used to be) synchronous mode
- a new "controlled by app" flag is passed when creating consumers and producers
those flags are used to put the BufferQueue in a mode where it
will never block if both flags are set. This is achieved by:
- returning an error from dequeueBuffer() if it would block
- making sure a buffer is always available by replacing
the previous buffer with the new one in queueBuffer()
(note: this is similar to what asynchrnous mode used to be)
Note: in this change EGL's swap-interval 0 is broken; this will be
fixed in another change.
Change-Id: I691f9507d6e2e158287e3039f2a79a4d4434211d
|
| |
| |
| |
| |
| |
| | |
to fix tests build.
Change-Id: I70b9cf5b0d76df709e474181eeb7c42a54ecf43a
|
| |
| |
| |
| | |
Change-Id: I883b0a7b19d8e722f9ab714ba6f49e658b02ca86
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
When acquiring a buffer, SurfaceFlinger now computes the expected
presentation time and passes it to the BufferQueue acquireBuffer()
method. If it's not yet time to display the buffer, acquireBuffer()
returns PRESENT_LATER instead of a buffer.
The current implementation of the expected-present-time computation
uses approximations and guesswork.
Bug 7900302
Change-Id: If9345611c5983a11a811935aaf27d6388a5036f1
|
|
|
|
|
|
|
|
|
|
| |
This change fixes how the MultiTextureConsumerTest.EGLImageTargetWorks checks
for pixels. It removes the call to eglSwapBuffers so that the test does not
rely on EGL swap-preserve behavior, and it makes the test use checkPixel()
rather than doing glReadPixels itself.
Bug: 8349336
Change-Id: I0f446a0083eebd07af6fd208762878b4e367725a
|
|
|
|
|
| |
Bug: 8395618
Change-Id: I160d29699593b11058533ca753e275d5deeb3b54
|
|
|
|
|
|
|
|
| |
This change increases the pixel difference tolerance of the
SurfaceTextureGLTest.TexturingFromCpuFilledYV12BufferNpot test from 2 to 3.
Bug: 8349135
Change-Id: I82e361a689335f49065cacd8a3fc145d67b125f1
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves the call to ConsumerBase::abandon from the ConsumerBase dtor to
ConsumerBase::onLastStrongRef. The abandon call relies on virtual methods to
perform the clean-up, so calling it from the ConsumerBase dtor after the
derived classes dtors ran was skipping some of the clean-up. The
onLastStrongRef method should get called just before the most derived class's
dtor gets called.
Bug: 8349135
Change-Id: I836946826927cc1ed69c049049f525f92b17a269
|
|
|
|
| |
Change-Id: I31ca84c85edff3e2ff90c554769e058110f27d49
|
|
|
|
|
| |
Bug: 8384764
Change-Id: I7a3f1e1a0584a70af04f9eafef900505389d2202
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: I0a0f6ce73516883bf50c749a1759abbdb3748e08
|
|
|
|
|
|
|
|
| |
We check that calling eglSwapBuffers() on an abandonned BufferQueue
return EGL_BAD_SURFACE -- this is to ensure consistancy between
drivers.
Change-Id: Ibb548e0cf767ceee69f2fc4a85811d15a6522277
|
|
|
|
|
|
| |
this was there just for legacy reasons.
Change-Id: I0a48d6e04d7efa65033f9f10c91bba557f16ae8b
|
|
|
|
| |
Change-Id: Ibed34175ae273608393aaa5f0a7df207dc40d709
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: I8c8282a0debd551db290dd6849faf272a88c704c
|
|
|
|
|
|
|
| |
Added a test to confirm that the transform hint is being respected.
Bug: 7162482
Change-Id: I892fe962f8cf2759ff951b4f5065b9ac2732c3d1
|
|
|
|
|
|
|
| |
This change adds a check to verify the validity of the value passed to
setMaxAcquiredBufferCount.
Change-Id: I39730557aa58261e678bd6e4fce11bab78e98362
|
|
|
|
|
|
|
|
|
| |
This change adds some infrastructure for testing the BufferQueue class. It
also includes a test that tests the new check in BufferQueue::acquireBuffer
that prevents the consumer from acquiring more than one buffer beyond the max
acquired buffer count that was set.
Change-Id: I38554ad3f9a53d2ddeba7ef0deee35ec2e2f9775
|
|
|
|
|
|
|
| |
This change disables the CpuConsumer tests because they require a Gralloc
format that is not supported on all devices.
Change-Id: Ifaa618062c1dae53d9fcb9e16ba92c480d3dbd0c
|
|
|
|
| |
Change-Id: Ic74fe8791361f8fe91ad7149720fafd4cc154ac1
|
|
|
|
|
|
| |
This change adds a few error checks both in the framework and in some tests.
Change-Id: I2baf2676942a0dc15866e75852a775a0091ed16d
|
|
|
|
|
|
|
|
| |
This change is a clean up of some of the handling of the maximum number of
buffers that are allowed at once. It mostly renames a few member variables and
methods, but it includes a couple small refactorings.
Change-Id: I9959310f563d09583548d4291e1050a7bbc7d87d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use only display tokens in the API to refer to new displays.
Don't require the caller to specify the display when creating
a surface (since in general a surface could be shown on
any display).
This is intended to be a minimum change just to update the API.
Note that SurfaceFlinger still uses DisplayID in a few places
internally that might cause some features not to work properly
when there are multiple displays (LayerScreenshot, for example).
Change-Id: I3d91eec2da406eefd97bcd53655d403ad865a7e6
|
|
|
|
|
|
|
| |
This change updates the uses of ANativeWindow to use the new ANW functions that
accept and return Sync HAL fence file descriptors.
Change-Id: I3ca648b6ac33f7360e86754f924aa072f95242f6
|
|\
| |
| |
| |
| |
| |
| | |
slots" into jb-dev
* commit 'bd56aabb92097546073c8dd8949bb03161e72c56':
Recreate EGLImage for previously used slots
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
SurfaceTexture would only create an EGLImage for a buffer slot when
BufferQueue returns a GraphicBuffer, i.e. either the slot was acquired
for the first time ever, or the buffer for the slot was reallocated.
But the EGLImage may also need to be re-created for a
previously-acquired buffer if the slot's EGLImage was destroyed during
detachFromContext(); in this case BufferQueue won't return a
GraphicBuffer since SurfaceTexture already has a reference to the
correct buffer.
Bug: 6461693
Change-Id: Ib95d0d757192efe336c5fda0866f857481a6617d
|
|\ \
| |/
| |
| |
| |
| | |
* commit 'dd73996552938ac5165a35f09d389abedcf421ef':
SurfaceFlinger: recompute visible regions less
libgui: remove setPostTransformCrop
|
| |
| |
| |
| |
| |
| |
| |
| | |
This change removes the setPostTransformCrop function from
SurfaceTextureClient. It also includes a small logging fix in BufferQueue.
Bug: 6299171
Change-Id: Ifd0ed05b95dad6085e7a8267fda4d69b76ea3bad
|
|/
|
|
|
|
|
|
|
|
|
| |
Aimed for use cases where gralloc buffers need to be consumed by CPU
users, such as camera image data streams.
The CpuConsumer is a synchronous queue, which exposes raw pointers to
the underlying graphics buffers to applications. Multiple buffers may
be acquired at once, up to the limit set at time of construction.
Change-Id: If1d99f12471438e95a69696e40685948778055fd
|
|
|
|
|
|
|
|
| |
This change adds support for specifying a crop rectangle to a
SurfaceTextureClient that is in post-transformed coordinate space.
Change-Id: I247901de343e71b32850f7ae3bac62dfa612ad3d
Bug: 6299171
|
|
|
|
|
|
|
|
| |
This change adds the plumbing to SurfaceTextureClient, BufferQueue, and
SurfaceTexture to get the active rectangle passed to the ANativeWindow to
the buffer consumer.
Change-Id: I35da0889b266327ebb079b6a7136fa3e2e8b00e6
|
|
|
|
|
|
|
|
|
| |
This change makes SurfaceTexture include an offset for all sides of the crop
region when cropping. This keeps the image centered, to minimize the visual
changes when switching between the texture transform matrix-based cropping and
something that does proper cropping (e.g. HWComposer).
Change-Id: I541d3046fd92e49221b488444df36d490924d1c5
|
|
|
|
|
|
|
|
|
| |
SurfaceTexture will modify the crop rect so it matches
the desired output aspect ratio when the scaling
mode is NATIVE_WINDOW_SCALING_MODE_CROP. Added a test
for this new scaling mode.
Change-Id: I60f24dcbc294b65cd10a393d9e27d40f07d27bb6
|
|
|
|
|
|
|
| |
This change works around a compiler bug with the GCC 4.6 toolchain.
Bug: 6292211
Change-Id: I004c4750d92a29f193a37d8e605a28fdc3b7f076
|
|
|
|
|
|
|
|
|
| |
This change adds 3 tests for:
- User-overridden buffer size
- Transform hint
- User-overridden buffer size with transform hint
Change-Id: Ib15ea354685e436822c506099613b2bffa7b68c9
|
|
|
|
|
|
|
|
|
| |
BufferQueue's disconnect could race with updateTexImage
where invalid buffers could be released. Additionally
fixed similar bug with setBufferCount. Tests were added
to stress the disconnect mechanism.
Change-Id: I9afa4c64f3e025984e8a9e8d924852a71d044716
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change adds the detachFromContext and attachToContext methods to
SurfaceTexture. These methods allow the SurfaceTexture to switch from
one consumer GLES context to another. This change also includes a few
cleanups to the error return codes in updateTexImage.
Change-Id: I0df1eb599aa7b6f58f07431f242f8f09269559ed
|
|/
|
|
|
|
|
| |
pdk builds don't have libandroid.so available. Remove it from
projects that aren't actually using it.
Change-Id: I100dc84aaf8160c1062a122ef6d5aec0534d73fa
|