From 80f664c4222720d6b165332e5f0173d23a4485f0 Mon Sep 17 00:00:00 2001 From: Jason Macnak Date: Tue, 19 Jul 2022 16:44:22 -0700 Subject: [PATCH] minigbm: passthrough SENSOR_DIRECT_DATA via gbm frontend BUG=b:238609372 TEST=vts -m VtsHalSensorsV2_1TargetTest Change-Id: I37834f80d71e453e6e29b88198efc1584c109456 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3773926 Reviewed-by: Yiwei Zhang Commit-Queue: Jason Macnak Tested-by: Jason Macnak --- amdgpu.c | 3 ++- dumb_driver.c | 2 +- gbm.h | 5 +++++ gbm_helpers.c | 2 ++ i915.c | 3 ++- mediatek.c | 2 +- msm.c | 3 ++- rockchip.c | 2 +- 8 files changed, 16 insertions(+), 6 deletions(-) diff --git a/amdgpu.c b/amdgpu.c index 4d86e1f..5c891de 100644 --- a/amdgpu.c +++ b/amdgpu.c @@ -425,7 +425,8 @@ static int amdgpu_init(struct driver *drv) */ drv_modify_combination(drv, DRM_FORMAT_R8, &metadata, BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_HW_VIDEO_DECODER | - BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER); + BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER | + BO_USE_SENSOR_DIRECT_DATA); /* * The following formats will be allocated by the DRI backend and may be potentially tiled. diff --git a/dumb_driver.c b/dumb_driver.c index bbe6fce..f337e8b 100644 --- a/dumb_driver.c +++ b/dumb_driver.c @@ -41,7 +41,7 @@ static int dumb_driver_init(struct driver *drv) drv_modify_combination(drv, DRM_FORMAT_R8, &LINEAR_METADATA, BO_USE_HW_VIDEO_ENCODER | BO_USE_HW_VIDEO_DECODER | BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | - BO_USE_GPU_DATA_BUFFER); + BO_USE_GPU_DATA_BUFFER | BO_USE_SENSOR_DIRECT_DATA); drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA, BO_USE_HW_VIDEO_ENCODER | BO_USE_HW_VIDEO_DECODER | BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE); diff --git a/gbm.h b/gbm.h index cbfffdd..7fae11c 100644 --- a/gbm.h +++ b/gbm.h @@ -300,6 +300,11 @@ enum gbm_bo_flags { * object. */ GBM_BO_USE_GPU_DATA_BUFFER = (1 << 18), + + /** + * The buffer will be used as a sensor direct report output. + */ + GBM_BO_USE_SENSOR_DIRECT_DATA = (1 << 19), }; int diff --git a/gbm_helpers.c b/gbm_helpers.c index 0eed886..e5bcb40 100644 --- a/gbm_helpers.c +++ b/gbm_helpers.c @@ -48,6 +48,8 @@ uint64_t gbm_convert_usage(uint32_t usage) use_flags |= BO_USE_FRONT_RENDERING; if (usage & GBM_BO_USE_GPU_DATA_BUFFER) use_flags |= BO_USE_GPU_DATA_BUFFER; + if (usage & GBM_BO_USE_SENSOR_DIRECT_DATA) + use_flags |= BO_USE_SENSOR_DIRECT_DATA; return use_flags; } diff --git a/i915.c b/i915.c index d2b3d19..9eae9aa 100644 --- a/i915.c +++ b/i915.c @@ -235,7 +235,8 @@ static int i915_add_combinations(struct driver *drv) */ drv_modify_combination(drv, DRM_FORMAT_R8, &metadata_linear, BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_HW_VIDEO_DECODER | - BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER); + BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER | + BO_USE_SENSOR_DIRECT_DATA); const uint64_t render_not_linear = unset_flags(render, linear_mask); const uint64_t scanout_and_render_not_linear = render_not_linear | BO_USE_SCANOUT; diff --git a/mediatek.c b/mediatek.c index 34ffa13..ccf0131 100644 --- a/mediatek.c +++ b/mediatek.c @@ -110,7 +110,7 @@ static int mediatek_init(struct driver *drv) drv_modify_combination(drv, DRM_FORMAT_R8, &metadata, BO_USE_HW_VIDEO_DECODER | BO_USE_HW_VIDEO_ENCODER | BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | - BO_USE_GPU_DATA_BUFFER); + BO_USE_GPU_DATA_BUFFER | BO_USE_SENSOR_DIRECT_DATA); /* NV12 format for encoding and display. */ drv_modify_combination(drv, DRM_FORMAT_NV12, &metadata, diff --git a/msm.c b/msm.c index 93a5cb4..27f85d9 100644 --- a/msm.c +++ b/msm.c @@ -260,7 +260,8 @@ static int msm_init(struct driver *drv) */ drv_modify_combination(drv, DRM_FORMAT_R8, &LINEAR_METADATA, BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_HW_VIDEO_DECODER | - BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER); + BO_USE_HW_VIDEO_ENCODER | BO_USE_GPU_DATA_BUFFER | + BO_USE_SENSOR_DIRECT_DATA); /* * Android also frequently requests YV12 formats for some camera implementations diff --git a/rockchip.c b/rockchip.c index 3ccfe45..17478f3 100644 --- a/rockchip.c +++ b/rockchip.c @@ -108,7 +108,7 @@ static int rockchip_init(struct driver *drv) drv_add_combination(drv, DRM_FORMAT_R8, &metadata, BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_SW_MASK | BO_USE_LINEAR | BO_USE_HW_VIDEO_DECODER | BO_USE_HW_VIDEO_ENCODER | - BO_USE_GPU_DATA_BUFFER); + BO_USE_GPU_DATA_BUFFER | BO_USE_SENSOR_DIRECT_DATA); return 0; }