diff options
-rw-r--r-- | cros_gralloc/gralloc4/CrosGralloc4Mapper.cc | 8 | ||||
-rw-r--r-- | virtgpu_cross_domain.c | 5 |
2 files changed, 7 insertions, 6 deletions
diff --git a/cros_gralloc/gralloc4/CrosGralloc4Mapper.cc b/cros_gralloc/gralloc4/CrosGralloc4Mapper.cc index 65fc83c..90d9506 100644 --- a/cros_gralloc/gralloc4/CrosGralloc4Mapper.cc +++ b/cros_gralloc/gralloc4/CrosGralloc4Mapper.cc @@ -155,7 +155,13 @@ Return<Error> CrosGralloc4Mapper::validateBufferSize(void* rawHandle, return Error::BAD_VALUE; } - if (stride != crosHandle->pixel_stride) { + if (crosHandle->droid_format == HAL_PIXEL_FORMAT_BLOB) { + if (stride > crosHandle->pixel_stride) { + ALOGE("Failed to validateBufferSize. Oversized stride (%d vs %d).", stride, + crosHandle->pixel_stride); + return Error::BAD_VALUE; + } + } else if (stride != crosHandle->pixel_stride) { ALOGE("Failed to validateBufferSize. Stride mismatch (%d vs %d).", stride, crosHandle->pixel_stride); return Error::BAD_VALUE; diff --git a/virtgpu_cross_domain.c b/virtgpu_cross_domain.c index 4af9c3a..b94a4ae 100644 --- a/virtgpu_cross_domain.c +++ b/virtgpu_cross_domain.c @@ -196,11 +196,6 @@ static int cross_domain_metadata_query(struct driver *drv, struct bo_metadata *m metadata->memory_idx = addr[14]; metadata->physical_device_idx = addr[15]; - /* Detect buffers, which have no particular stride alignment requirement: */ - if ((metadata->height == 1) && (metadata->format == DRM_FORMAT_R8)) { - metadata->strides[0] = metadata->width; - } - remaining_size = metadata->total_size; for (plane = 0; plane < metadata->num_planes; plane++) { if (plane != 0) { |