AHardwareBuffer now reports its stride
Test: compile / manual
Bug: 37686713
Change-Id: I1d75c67816717dc5d8ef4c71c1ca45d1d86aefb3
diff --git a/libs/nativewindow/AHardwareBuffer.cpp b/libs/nativewindow/AHardwareBuffer.cpp
index 4a8d3b6..80c5ec2 100644
--- a/libs/nativewindow/AHardwareBuffer.cpp
+++ b/libs/nativewindow/AHardwareBuffer.cpp
@@ -50,8 +50,8 @@
return BAD_VALUE;
}
- if (desc->reserved != 0) {
- ALOGE("AHardwareBuffer_Desc::reserved field must be 0");
+ if (desc->rfu0 != 0 || desc->rfu1 != 0) {
+ ALOGE("AHardwareBuffer_Desc::rfu fields must be 0");
return BAD_VALUE;
}
@@ -101,10 +101,11 @@
outDesc->width = gbuffer->getWidth();
outDesc->height = gbuffer->getHeight();
outDesc->layers = gbuffer->getLayerCount();
- outDesc->format = AHardwareBuffer_convertFromPixelFormat(
- static_cast<uint32_t>(gbuffer->getPixelFormat()));
+ outDesc->format = AHardwareBuffer_convertFromPixelFormat(uint32_t(gbuffer->getPixelFormat()));
outDesc->usage = AHardwareBuffer_convertFromGrallocUsageBits(gbuffer->getUsage());
- outDesc->reserved = 0;
+ outDesc->stride = gbuffer->getStride();
+ outDesc->rfu0 = 0;
+ outDesc->rfu1 = 0;
}
int AHardwareBuffer_lock(AHardwareBuffer* buffer, uint64_t usage,
diff --git a/libs/nativewindow/include/android/hardware_buffer.h b/libs/nativewindow/include/android/hardware_buffer.h
index e1d54e6..52440a5 100644
--- a/libs/nativewindow/include/android/hardware_buffer.h
+++ b/libs/nativewindow/include/android/hardware_buffer.h
@@ -137,12 +137,14 @@
};
typedef struct AHardwareBuffer_Desc {
- uint32_t width;
- uint32_t height;
- uint32_t layers;
+ uint32_t width; // width in pixels
+ uint32_t height; // height in pixels
+ uint32_t layers; // number of images
uint32_t format; // One of AHARDWAREBUFFER_FORMAT_*
uint64_t usage; // Combination of AHARDWAREBUFFER_USAGE_*
- uint64_t reserved; // Initialize to zero, reserved for future use
+ uint32_t stride; // Stride in pixels, ignored for AHardwareBuffer_allocate()
+ uint32_t rfu0; // Initialize to zero, reserved for future use
+ uint64_t rfu1; // Initialize to zero, reserved for future use
} AHardwareBuffer_Desc;
typedef struct AHardwareBuffer AHardwareBuffer;