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