mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
video: rockchip: rga3: changing to close acquire_fence_fd in user-space
Since GKI disables closing fd in the kernel, the acquire fence fd should be closed in user-space. Update driver version to 1.3.0 Change-Id: I9bf85d6a39b3564332fc00dc9fce01678dc1ce3b Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
This commit is contained in:
@@ -567,6 +567,12 @@ struct rga_img_info_t {
|
||||
uint16_t enable;
|
||||
};
|
||||
|
||||
struct rga_feature {
|
||||
uint32_t global_alpha_en:1;
|
||||
uint32_t full_csc_clip_en:1;
|
||||
uint32_t user_close_fence:1;
|
||||
};
|
||||
|
||||
struct rga_req {
|
||||
/* (enum) process mode sel */
|
||||
uint8_t render_mode;
|
||||
@@ -689,10 +695,7 @@ struct rga_req {
|
||||
uint8_t fg_global_alpha;
|
||||
uint8_t bg_global_alpha;
|
||||
|
||||
struct {
|
||||
uint32_t global_alpha_en:1;
|
||||
uint32_t full_csc_clip_en:1;
|
||||
} feature;
|
||||
struct rga_feature feature;
|
||||
|
||||
struct rga_csc_clip full_csc_clip;
|
||||
|
||||
|
||||
@@ -86,8 +86,8 @@
|
||||
#define STR(x) STR_HELPER(x)
|
||||
|
||||
#define DRIVER_MAJOR_VERISON 1
|
||||
#define DRIVER_MINOR_VERSION 2
|
||||
#define DRIVER_REVISION_VERSION 27
|
||||
#define DRIVER_MINOR_VERSION 3
|
||||
#define DRIVER_REVISION_VERSION 0
|
||||
#define DRIVER_PATCH_VERSION
|
||||
|
||||
#define DRIVER_VERSION (STR(DRIVER_MAJOR_VERISON) "." STR(DRIVER_MINOR_VERSION) \
|
||||
@@ -380,6 +380,7 @@ struct rga_request {
|
||||
*/
|
||||
struct mm_struct *current_mm;
|
||||
|
||||
struct rga_feature feature;
|
||||
/* TODO: add some common work */
|
||||
};
|
||||
|
||||
|
||||
@@ -536,12 +536,21 @@ static int rga_request_add_acquire_fence_callback(int acquire_fence_fd,
|
||||
__func__, acquire_fence_fd);
|
||||
return -EINVAL;
|
||||
}
|
||||
/* close acquire fence fd */
|
||||
|
||||
if (!request->feature.user_close_fence) {
|
||||
/* close acquire fence fd */
|
||||
#ifdef CONFIG_NO_GKI
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
|
||||
close_fd(acquire_fence_fd);
|
||||
close_fd(acquire_fence_fd);
|
||||
#else
|
||||
ksys_close(acquire_fence_fd);
|
||||
ksys_close(acquire_fence_fd);
|
||||
#endif
|
||||
#else
|
||||
pr_err("Please update the driver to v1.2.28 to prevent acquire_fence_fd leaks.");
|
||||
return -EFAULT;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
ret = rga_dma_fence_get_status(acquire_fence);
|
||||
if (ret < 0) {
|
||||
@@ -972,6 +981,7 @@ struct rga_request *rga_request_config(struct rga_user_request *user_request)
|
||||
request->sync_mode = user_request->sync_mode;
|
||||
request->mpi_config_flags = user_request->mpi_config_flags;
|
||||
request->acquire_fence_fd = user_request->acquire_fence_fd;
|
||||
request->feature = task_list[0].feature;
|
||||
|
||||
spin_unlock_irqrestore(&request->lock, flags);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user