diff options
Diffstat (limited to 'gralloc/gr_buf_mgr.cpp')
-rw-r--r-- | gralloc/gr_buf_mgr.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp index dd9a0297..0d5d3761 100644 --- a/gralloc/gr_buf_mgr.cpp +++ b/gralloc/gr_buf_mgr.cpp @@ -567,6 +567,31 @@ static Error getComponentSizeAndOffset(int32_t format, PlaneLayoutComponent &com return Error::BAD_VALUE; } break; + case static_cast<int32_t>(HAL_PIXEL_FORMAT_RAW16): + if (comp.type.value == android::gralloc4::PlaneLayoutComponentType_RAW.value) { + comp.offsetInBits = 0; + comp.sizeInBits = 16; + } else { + return Error::BAD_VALUE; + } + break; + case static_cast<int32_t>(HAL_PIXEL_FORMAT_RAW12): + case static_cast<int32_t>(HAL_PIXEL_FORMAT_RAW10): + if (comp.type.value == android::gralloc4::PlaneLayoutComponentType_RAW.value) { + comp.offsetInBits = 0; + comp.sizeInBits = -1; + } else { + return Error::BAD_VALUE; + } + break; + case static_cast<int32_t>(HAL_PIXEL_FORMAT_RAW8): + if (comp.type.value == android::gralloc4::PlaneLayoutComponentType_RAW.value) { + comp.offsetInBits = 0; + comp.sizeInBits = 8; + } else { + return Error::BAD_VALUE; + } + break; default: ALOGI_IF(DEBUG, "Offset and size in bits unknown for format %d", format); return Error::UNSUPPORTED; @@ -624,8 +649,9 @@ static void grallocToStandardPlaneLayoutComponentType(uint32_t in, } if (in & PLANE_COMPONENT_RAW) { - comp.type = qtigralloc::PlaneLayoutComponentType_Raw; - components->push_back(comp); + comp.type = android::gralloc4::PlaneLayoutComponentType_RAW; + if (getComponentSizeAndOffset(format, comp) == Error::NONE) + components->push_back(comp); } if (in & PLANE_COMPONENT_META) { |