#include <cutils/native_handle.h>
#include <gralloctypes/Gralloc4.h>
+#include "cros_gralloc/cros_gralloc_helpers.h"
#include "cros_gralloc/gralloc4/CrosGralloc4Utils.h"
+
#include "helpers.h"
using aidl::android::hardware::graphics::common::BlendMode;
bool supported = mDriver->is_supported(&crosDescriptor);
if (!supported) {
- crosDescriptor.use_flags &= ~BO_USE_SCANOUT;
+ crosDescriptor.use_flags &= ~(BO_USE_SCANOUT | BO_USE_COMPOSER_TARGET);
supported = mDriver->is_supported(&crosDescriptor);
}
PixelFormat pixelFormat = static_cast<PixelFormat>(crosHandle->droid_format);
status = android::gralloc4::encodePixelFormatRequested(pixelFormat, &encodedMetadata);
} else if (metadataType == android::gralloc4::MetadataType_PixelFormatFourCC) {
- uint32_t format = crosHandle->format;
- // Map internal fourcc codes back to standard fourcc codes.
- if (format == DRM_FORMAT_YVU420_ANDROID) {
- format = DRM_FORMAT_YVU420;
- }
- status = android::gralloc4::encodePixelFormatFourCC(format, &encodedMetadata);
+ status = android::gralloc4::encodePixelFormatFourCC(
+ drv_get_standard_fourcc(crosHandle->format), &encodedMetadata);
} else if (metadataType == android::gralloc4::MetadataType_PixelFormatModifier) {
status = android::gralloc4::encodePixelFormatModifier(crosHandle->format_modifier,
&encodedMetadata);
planeLayout.offsetInBytes = crosHandle->offsets[plane];
planeLayout.strideInBytes = crosHandle->strides[plane];
planeLayout.totalSizeInBytes = crosHandle->sizes[plane];
- planeLayout.widthInSamples = crosHandle->width;
- planeLayout.heightInSamples = crosHandle->height;
+ planeLayout.widthInSamples = crosHandle->width / planeLayout.horizontalSubsampling;
+ planeLayout.heightInSamples = crosHandle->height / planeLayout.verticalSubsampling;
}
status = android::gralloc4::encodePlaneLayouts(planeLayouts, &encodedMetadata);
uint32_t resolvedDrmFormat = mDriver->get_resolved_drm_format(drmFormat, usage);
if (resolvedDrmFormat == DRM_FORMAT_INVALID) {
- std::string drmFormatString = getDrmFormatString(drmFormat);
+ std::string drmFormatString = get_drm_format_string(drmFormat);
drv_log("Failed to getResolvedDrmFormat. Failed to resolve drm format %s\n",
drmFormatString.c_str());
return -1;
hidlCb(Error::BAD_VALUE, encodedMetadata);
return Void();
}
- status = android::gralloc4::encodePixelFormatFourCC(drmFormat, &encodedMetadata);
+ status = android::gralloc4::encodePixelFormatFourCC(drv_get_standard_fourcc(drmFormat),
+ &encodedMetadata);
} else if (metadataType == android::gralloc4::MetadataType_Usage) {
status = android::gralloc4::encodeUsage(descriptor.usage, &encodedMetadata);
} else if (metadataType == android::gralloc4::MetadataType_ProtectedContent) {