Setting CAMetalLayer's displaySyncEnabled to FALSE will cause load on InterruptEventSourceBridge thread in kernel_task

I have a test application that draws a large number of simple textured polygons (sprites).

Setting CAMetalLayer's displaySyncEnabled to FALSE will cause load on InterruptEventSourceBridge thread in kernel_task.

(In this case, nanosleep is used to adjust the amount of METAL commands per unit time so that they are approximately the same)

This appears to be a drawing-related thread, but there is no overhead when displaySyncEnabled is TRUE.

What are these differences?

A specific application is the SDL test program, SDL/test/testsprite.c.

https://github.com/libsdl-org/SDL/issues/10475

Similar results were obtained with the following sample that does not use SDL:

https://github.com/kanjitalk755/Metal-simple-sample

Setting CAMetalLayer's displaySyncEnabled to FALSE will cause load on InterruptEventSourceBridge thread in kernel_task
 
 
Q