[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