mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-29 11:06:18 +00:00
u/pacing: Add gpu_info to u_pacing_compositor
This commit is contained in:
parent
da542e3f5e
commit
f63c786ac9
|
@ -134,6 +134,27 @@ struct u_pacing_compositor
|
||||||
uint64_t present_margin_ns,
|
uint64_t present_margin_ns,
|
||||||
uint64_t when_ns);
|
uint64_t when_ns);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Provide frame timing information about GPU start and stop time.
|
||||||
|
*
|
||||||
|
* Depend on when the information is delivered this can be called at any
|
||||||
|
* point of the following frames.
|
||||||
|
*
|
||||||
|
* @param[in] upc The compositor pacing helper.
|
||||||
|
* @param[in] frame_id The frame ID to record for.
|
||||||
|
* @param[in] gpu_start_ns When the GPU work startred.
|
||||||
|
* @param[in] gpu_end_ns When the GPU work stopped.
|
||||||
|
* @param[in] when_ns When the informatioon collected, nominally
|
||||||
|
* from @ref os_monotonic_get_ns.
|
||||||
|
*
|
||||||
|
* @see @ref frame-pacing.
|
||||||
|
*/
|
||||||
|
void (*info_gpu)(struct u_pacing_compositor *upc,
|
||||||
|
int64_t frame_id,
|
||||||
|
uint64_t gpu_start_ns,
|
||||||
|
uint64_t gpu_end_ns,
|
||||||
|
uint64_t when_ns);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Provide a vblank timing information, derived from the
|
* Provide a vblank timing information, derived from the
|
||||||
* VK_EXT_display_control extension. Since the extension only says when
|
* VK_EXT_display_control extension. Since the extension only says when
|
||||||
|
@ -233,6 +254,22 @@ u_pc_info(struct u_pacing_compositor *upc,
|
||||||
present_margin_ns, when_ns);
|
present_margin_ns, when_ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @copydoc u_pacing_compositor::info_gpu
|
||||||
|
*
|
||||||
|
* Helper for calling through the function pointer.
|
||||||
|
*
|
||||||
|
* @public @memberof u_pacing_compositor
|
||||||
|
* @ingroup aux_pacing
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
u_pc_info_gpu(
|
||||||
|
struct u_pacing_compositor *upc, int64_t frame_id, uint64_t gpu_start_ns, uint64_t gpu_end_ns, uint64_t when_ns)
|
||||||
|
{
|
||||||
|
upc->info_gpu(upc, frame_id, gpu_start_ns, gpu_end_ns, when_ns);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @copydoc u_pacing_compositor::update_vblank_from_display_control
|
* @copydoc u_pacing_compositor::update_vblank_from_display_control
|
||||||
*
|
*
|
||||||
|
|
|
@ -641,6 +641,13 @@ pc_info(struct u_pacing_compositor *upc,
|
||||||
#undef TE_END
|
#undef TE_END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pc_info_gpu(
|
||||||
|
struct u_pacing_compositor *upc, int64_t frame_id, uint64_t gpu_start_ns, uint64_t gpu_end_ns, uint64_t when_ns)
|
||||||
|
{
|
||||||
|
// No-op
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pc_update_vblank_from_display_control(struct u_pacing_compositor *upc, uint64_t last_vblank_ns)
|
pc_update_vblank_from_display_control(struct u_pacing_compositor *upc, uint64_t last_vblank_ns)
|
||||||
{
|
{
|
||||||
|
@ -690,6 +697,7 @@ u_pc_display_timing_create(uint64_t estimated_frame_period_ns,
|
||||||
pc->base.predict = pc_predict;
|
pc->base.predict = pc_predict;
|
||||||
pc->base.mark_point = pc_mark_point;
|
pc->base.mark_point = pc_mark_point;
|
||||||
pc->base.info = pc_info;
|
pc->base.info = pc_info;
|
||||||
|
pc->base.info_gpu = pc_info_gpu;
|
||||||
pc->base.update_vblank_from_display_control = pc_update_vblank_from_display_control;
|
pc->base.update_vblank_from_display_control = pc_update_vblank_from_display_control;
|
||||||
pc->base.update_present_offset = pc_update_present_offset;
|
pc->base.update_present_offset = pc_update_present_offset;
|
||||||
pc->base.destroy = pc_destroy;
|
pc->base.destroy = pc_destroy;
|
||||||
|
|
|
@ -152,6 +152,13 @@ pc_info(struct u_pacing_compositor *upc,
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pc_info_gpu(
|
||||||
|
struct u_pacing_compositor *upc, int64_t frame_id, uint64_t gpu_start_ns, uint64_t gpu_end_ns, uint64_t when_ns)
|
||||||
|
{
|
||||||
|
// No-op
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pc_update_vblank_from_display_control(struct u_pacing_compositor *upc, uint64_t last_vblank_ns)
|
pc_update_vblank_from_display_control(struct u_pacing_compositor *upc, uint64_t last_vblank_ns)
|
||||||
{
|
{
|
||||||
|
@ -193,6 +200,7 @@ u_pc_fake_create(uint64_t estimated_frame_period_ns, uint64_t now_ns, struct u_p
|
||||||
ft->base.predict = pc_predict;
|
ft->base.predict = pc_predict;
|
||||||
ft->base.mark_point = pc_mark_point;
|
ft->base.mark_point = pc_mark_point;
|
||||||
ft->base.info = pc_info;
|
ft->base.info = pc_info;
|
||||||
|
ft->base.info_gpu = pc_info_gpu;
|
||||||
ft->base.update_vblank_from_display_control = pc_update_vblank_from_display_control;
|
ft->base.update_vblank_from_display_control = pc_update_vblank_from_display_control;
|
||||||
ft->base.update_present_offset = pc_update_present_offset;
|
ft->base.update_present_offset = pc_update_present_offset;
|
||||||
ft->base.destroy = pc_destroy;
|
ft->base.destroy = pc_destroy;
|
||||||
|
|
Loading…
Reference in a new issue