drm/panthor: Add DEV_QUERY_TIMESTAMP_INFO dev query
Expose timestamp information supported by the GPU with a new device query. Mali uses an external timer as GPU system time. On ARM, this is wired to the generic arch timer so we wire cntfrq_el0 as device frequency. This new uAPI will be used in Mesa to implement timestamp queries and VK_KHR_calibrated_timestamps. Since this extends the uAPI and because userland needs a way to advertise those features conditionally, this also bumps the driver minor version. v2: - Rewrote to use GPU timestamp register - Added timestamp_offset to drm_panthor_timestamp_info - Add missing include for arch_timer_get_cntfrq - Rework commit message v3: - Add panthor_gpu_read_64bit_counter - Change panthor_gpu_read_timestamp to use panthor_gpu_read_64bit_counter v4: - Fix multiple typos in uAPI documentation - Mention behavior when the timestamp frequency is unknown - Use u64 instead of unsigned long long for panthor_gpu_read_timestamp - Apply r-b from Mihail Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Mihail Atanassov <mihail.atanassov@arm.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240830080349.24736-2-mary.guillemard@collabora.com
This commit is contained in:
committed by
Boris Brezillon
parent
c6430a8eb0
commit
a778028cc5
@@ -260,6 +260,9 @@ enum drm_panthor_dev_query_type {
|
||||
|
||||
/** @DRM_PANTHOR_DEV_QUERY_CSIF_INFO: Query command-stream interface information. */
|
||||
DRM_PANTHOR_DEV_QUERY_CSIF_INFO,
|
||||
|
||||
/** @DRM_PANTHOR_DEV_QUERY_TIMESTAMP_INFO: Query timestamp information. */
|
||||
DRM_PANTHOR_DEV_QUERY_TIMESTAMP_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -377,6 +380,25 @@ struct drm_panthor_csif_info {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_timestamp_info - Timestamp information
|
||||
*
|
||||
* Structure grouping all queryable information relating to the GPU timestamp.
|
||||
*/
|
||||
struct drm_panthor_timestamp_info {
|
||||
/**
|
||||
* @timestamp_frequency: The frequency of the timestamp timer or 0 if
|
||||
* unknown.
|
||||
*/
|
||||
__u64 timestamp_frequency;
|
||||
|
||||
/** @current_timestamp: The current timestamp. */
|
||||
__u64 current_timestamp;
|
||||
|
||||
/** @timestamp_offset: The offset of the timestamp timer. */
|
||||
__u64 timestamp_offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_dev_query - Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user