[PATCH v3 15/17] drm/v3d: Create a CPU job extension to copy timestamp query to a buffer
Iago Toral
itoral at igalia.com
Tue Nov 28 08:54:55 UTC 2023
El lun, 27-11-2023 a las 15:48 -0300, Maíra Canal escribió:
(...)
> /**
> diff --git a/include/uapi/drm/v3d_drm.h b/include/uapi/drm/v3d_drm.h
> index 930f8d07f088..a3ae1f220291 100644
> --- a/include/uapi/drm/v3d_drm.h
> +++ b/include/uapi/drm/v3d_drm.h
> @@ -75,6 +75,7 @@ struct drm_v3d_extension {
> #define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
> #define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
> #define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
> +#define DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY 0x05
> __u32 flags; /* mbz */
> };
>
> @@ -451,6 +452,46 @@ struct drm_v3d_reset_timestamp_query {
> __u32 count;
> };
>
> +/**
> + * struct drm_v3d_copy_timestamp_query - ioctl extension for the CPU
> job to copy
> + * query results to a buffer
> + *
> + * When an extension DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY is
> defined, it
> + * points to this extension to define a copy timestamp query
> submission. This
> + * CPU job will copy the timestamp queries results to a BO with the
> offset
> + * and stride defined in the extension.
> + */
> +struct drm_v3d_copy_timestamp_query {
> + struct drm_v3d_extension base;
> +
> + /* Define if should write to buffer using 64 or 32 bits */
> + __u8 do_64bit;
> +
> + /* Define if it can write to buffer even if the query is not
> available */
> + __u8 do_partial;
> +
> + /* Define if it should write availability bit to buffer */
> + __u8 availability_bit;
> +
> + /* mbz */
> + __u8 pad;
> +
> + /* Offset of the buffer in the BO */
> + __u32 offset;
> +
> + /* Stride of the buffer in the BO */
> + __u32 stride;
> +
> + /* Number of queries */
> + __u32 count;
> +
> + /* Array of queries' offsets within the timestamp BO for
> their value */
> + __u64 offsets;
> +
> + /* Array of timestamp's syncobjs to indicate its availability
> */
> + __u64 syncs;
> +};
> +
> struct drm_v3d_submit_cpu {
> /* Pointer to a u32 array of the BOs that are referenced by
> the job.
> *
> @@ -462,6 +503,10 @@ struct drm_v3d_submit_cpu {
> *
> * For DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY, it must
> contain only
> * one BO, that contains the timestamp.
> + *
> + * For DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY, it must
> contain two
> + * BOs. The first is the BO for which the timestamp queries
> results
> + * will be written to. The second is the BO that contains the
> timestamp.
> */
(...) The first is the BO where the timestamp queries will be written
to. (...)
Iago
> __u64 bo_handles;
>
More information about the dri-devel
mailing list