Merge "Add YUV support in EVS VTS tests" into oc-dev
diff --git a/compatibility_matrix.xml b/compatibility_matrix.xml
new file mode 100644
index 0000000..cd3904e
--- /dev/null
+++ b/compatibility_matrix.xml
@@ -0,0 +1,34 @@
+<compatibility-matrix version="1.0" type="framework">
+ <hal format="hidl" optional="true">
+ <name>android.hardware.bluetooth</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.boot</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.configstore</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.ir</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.nfc</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.renderscript</name>
+ <version>1.0</version>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.wifi</name>
+ <version>1.0</version>
+ </hal>
+</compatibility-matrix>
diff --git a/graphics/composer/2.1/default/ComposerClient.cpp b/graphics/composer/2.1/default/ComposerClient.cpp
index 87e4d3b..ce4e17f 100644
--- a/graphics/composer/2.1/default/ComposerClient.cpp
+++ b/graphics/composer/2.1/default/ComposerClient.cpp
@@ -655,18 +655,24 @@
auto fence = readFence();
auto dataspace = readSigned();
auto damage = readRegion((length - 4) / 4);
+ bool closeFence = true;
auto err = lookupBuffer(BufferCache::CLIENT_TARGETS,
slot, useCache, clientTarget, &clientTarget);
if (err == Error::NONE) {
err = mHal.setClientTarget(mDisplay, clientTarget, fence,
dataspace, damage);
-
- updateBuffer(BufferCache::CLIENT_TARGETS, slot, useCache,
- clientTarget);
+ auto updateBufErr = updateBuffer(BufferCache::CLIENT_TARGETS, slot,
+ useCache, clientTarget);
+ if (err == Error::NONE) {
+ closeFence = false;
+ err = updateBufErr;
+ }
+ }
+ if (closeFence) {
+ close(fence);
}
if (err != Error::NONE) {
- close(fence);
mWriter.setError(getCommandLoc(), err);
}
@@ -683,17 +689,23 @@
auto slot = read();
auto outputBuffer = readHandle(&useCache);
auto fence = readFence();
+ bool closeFence = true;
auto err = lookupBuffer(BufferCache::OUTPUT_BUFFERS,
slot, useCache, outputBuffer, &outputBuffer);
if (err == Error::NONE) {
err = mHal.setOutputBuffer(mDisplay, outputBuffer, fence);
-
- updateBuffer(BufferCache::OUTPUT_BUFFERS,
- slot, useCache, outputBuffer);
+ auto updateBufErr = updateBuffer(BufferCache::OUTPUT_BUFFERS,
+ slot, useCache, outputBuffer);
+ if (err == Error::NONE) {
+ closeFence = false;
+ err = updateBufErr;
+ }
+ }
+ if (closeFence) {
+ close(fence);
}
if (err != Error::NONE) {
- close(fence);
mWriter.setError(getCommandLoc(), err);
}
@@ -786,17 +798,23 @@
auto slot = read();
auto buffer = readHandle(&useCache);
auto fence = readFence();
+ bool closeFence = true;
auto err = lookupBuffer(BufferCache::LAYER_BUFFERS,
slot, useCache, buffer, &buffer);
if (err == Error::NONE) {
err = mHal.setLayerBuffer(mDisplay, mLayer, buffer, fence);
-
- updateBuffer(BufferCache::LAYER_BUFFERS,
- slot, useCache, buffer);
+ auto updateBufErr = updateBuffer(BufferCache::LAYER_BUFFERS, slot,
+ useCache, buffer);
+ if (err == Error::NONE) {
+ closeFence = false;
+ err = updateBufErr;
+ }
+ }
+ if (closeFence) {
+ close(fence);
}
if (err != Error::NONE) {
- close(fence);
mWriter.setError(getCommandLoc(), err);
}
@@ -915,8 +933,10 @@
auto err = lookupLayerSidebandStream(stream, &stream);
if (err == Error::NONE) {
err = mHal.setLayerSidebandStream(mDisplay, mLayer, stream);
-
- updateLayerSidebandStream(stream);
+ auto updateErr = updateLayerSidebandStream(stream);
+ if (err == Error::NONE) {
+ err = updateErr;
+ }
}
if (err != Error::NONE) {
mWriter.setError(getCommandLoc(), err);
@@ -1097,21 +1117,24 @@
return Error::NONE;
}
-void ComposerClient::CommandReader::updateBuffer(BufferCache cache,
+Error ComposerClient::CommandReader::updateBuffer(BufferCache cache,
uint32_t slot, bool useCache, buffer_handle_t handle)
{
// handle was looked up from cache
if (useCache) {
- return;
+ return Error::NONE;
}
std::lock_guard<std::mutex> lock(mClient.mDisplayDataMutex);
BufferCacheEntry* entry = nullptr;
- lookupBufferCacheEntryLocked(cache, slot, &entry);
- LOG_FATAL_IF(!entry, "failed to find the cache entry to update");
+ Error error = lookupBufferCacheEntryLocked(cache, slot, &entry);
+ if (error != Error::NONE) {
+ return error;
+ }
*entry = handle;
+ return Error::NONE;
}
} // namespace implementation
diff --git a/graphics/composer/2.1/default/ComposerClient.h b/graphics/composer/2.1/default/ComposerClient.h
index c973351..3d10f80 100644
--- a/graphics/composer/2.1/default/ComposerClient.h
+++ b/graphics/composer/2.1/default/ComposerClient.h
@@ -173,7 +173,7 @@
Error lookupBuffer(BufferCache cache, uint32_t slot,
bool useCache, buffer_handle_t handle,
buffer_handle_t* outHandle);
- void updateBuffer(BufferCache cache, uint32_t slot,
+ Error updateBuffer(BufferCache cache, uint32_t slot,
bool useCache, buffer_handle_t handle);
Error lookupLayerSidebandStream(buffer_handle_t handle,
@@ -182,9 +182,9 @@
return lookupBuffer(BufferCache::LAYER_SIDEBAND_STREAMS,
0, false, handle, outHandle);
}
- void updateLayerSidebandStream(buffer_handle_t handle)
+ Error updateLayerSidebandStream(buffer_handle_t handle)
{
- updateBuffer(BufferCache::LAYER_SIDEBAND_STREAMS,
+ return updateBuffer(BufferCache::LAYER_SIDEBAND_STREAMS,
0, false, handle);
}