Buffer transfer and locking workarounds for EVS
These changes get EVS working for 3 frames with validated buffer contents
before HIDL reports a error on the 4th frame when running on Marlin. More
investigation is required to resolve the HIDL issue.
Test: Build and run againsgt evs_test
Change-Id: I5096e74aa897e690900620b77a47f79646b0f040
diff --git a/evs/1.0/default/EvsDisplay.cpp b/evs/1.0/default/EvsDisplay.cpp
index 7208395..bbfff35 100644
--- a/evs/1.0/default/EvsDisplay.cpp
+++ b/evs/1.0/default/EvsDisplay.cpp
@@ -169,7 +169,7 @@
mBuffer.memHandle = handle;
mFrameBusy = false;
ALOGD("Allocated new buffer %p with stride %u",
- mBuffer.memHandle.getNativeHandle(), mStride);
+ mBuffer.memHandle.getNativeHandle(), mBuffer.stride);
}
// Do we have a frame available?
@@ -263,7 +263,8 @@
continue;
}
// Walk across this row (we'll step rows below)
- if (pixels[col] != expectedPixel) {
+ uint32_t receivedPixel = pixels[col];
+ if (receivedPixel != expectedPixel) {
ALOGE("Pixel check mismatch in frame buffer");
frameLooksGood = false;
break;
@@ -274,8 +275,8 @@
break;
}
- // Point to the next row
- pixels = pixels + (mStride / sizeof(*pixels));
+ // Point to the next row (NOTE: gralloc reports stride in units of pixels)
+ pixels = pixels + mBuffer.stride;
}
// Ensure we don't see the same buffer twice without it being rewritten