History

drm/v3d: Create a CPU job extension for the reset timestamp job

A CPU job is a type of job that performs operations that requires CPU intervention. A reset timestamp job is a job that resets the timestamp queries based on the value offset of the first query. As V3D doesn't provide any mechanism to obtain a timestamp from the GPU, it is a job that needs CPU intervention. So, create a user extension for the CPU job that enables the creation of a reset timestamp job. This user extension will allow the creation of a CPU job that resets the timestamp value in the timestamp BO and resets the availability syncobj.

Maíra Canal committed 2 years ago

Commit 34a101e1 parent 9ba0ff34 files · +101 −0Browse files

Showing the changes to include/uapi (1 of 4 files). Show all

Unified · Split

include/uapi/drm/v3d_drm.h+27−0
@@ -74,6 +74,7 @@ struct drm_v3d_extension { · 73 unmodified lines
7474 #define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
7575 #define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
7676 #define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
77+#define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
7778 __u32 flags; /* mbz */
7879 };
7980
@@ -427,6 +428,29 @@ struct drm_v3d_timestamp_query { · 347 unmodified lines
427428 __u32 pad;
428429 };
429430
431+/**
432+ * struct drm_v3d_reset_timestamp_query - ioctl extension for the CPU job to
433+ * reset timestamp queries
434+ *
435+ * When an extension DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY is defined, it
436+ * points to this extension to define a reset timestamp submission. This CPU
437+ * job will reset the timestamp queries based on value offset of the first
438+ * query. Moreover, it will reset the timestamp syncobj to reset query
439+ * availability.
440+ */
441+struct drm_v3d_reset_timestamp_query {
442+ struct drm_v3d_extension base;
443+
444+ /* Array of timestamp's syncobjs to indicate its availability */
445+ __u64 syncs;
446+
447+ /* Offset of the first query within the timestamp BO for its value */
448+ __u32 offset;
449+
450+ /* Number of queries */
451+ __u32 count;
452+};
453+
430454 struct drm_v3d_submit_cpu {
431455 /* Pointer to a u32 array of the BOs that are referenced by the job.
432456 *
@@ -435,6 +459,9 @@ struct drm_v3d_submit_cpu { · 2 unmodified lines
435459 *
436460 * For DRM_V3D_EXT_ID_TIMESTAMP_QUERY, it must contain only one BO,
437461 * that will contain the timestamp.
462+ *
463+ * For DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY, it must contain only
464+ * one BO, that contains the timestamp.
438465 */
439466 __u64 bo_handles;
440467

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t