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>
This commit is contained in:
Jason Macnak 2022-07-19 16:44:22 -07:00 committed by Chromeos LUCI
parent d0cce89e65
commit 80f664c422
8 changed files with 16 additions and 6 deletions

View file

@ -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.

View file

@ -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);

5
gbm.h
View file

@ -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

View file

@ -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;
}

3
i915.c
View file

@ -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;

View file

@ -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,

3
msm.c
View file

@ -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

View file

@ -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;
}