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 <zzyiwei@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
Tested-by: Jason Macnak <natsu@google.com>
diff --git a/amdgpu.c b/amdgpu.c
index 4d86e1f..5c891de 100644
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -425,7 +425,8 @@
*/
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 @@
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 @@
* 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 @@
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 @@
*/
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 @@
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 @@
*/
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 @@
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;
}