Hi,Guys,
I want to know how mali gpu schedule when compute kernel(openCL) and opengles rendering called concurrently and the performance?
best wishes .
phenix
I want to know how mali gpu schedule when compute kernel(openCL) and opengles rendering called concurrently
Within a single process work is generally scheduled in a first-come first-served approach, unless resource dependencies mean that work cannot start, in which case newer work which can run will be scheduled. There is no pre-emption within a single process (based on the general assumption that the application developer knows more about how to order the command stream than we do).
Certain workloads can run in a parallel (compute and fragment shading), others can't (compute and vertex shading).
and the performance?
There is no overhead in terms of switching from graphics to compute or visa-versa, but performance really depends on what you are doing, so that's an impossible question to answer .
HTH, Pete
Is there exsiting default timeout value if the openCL kernel is complex that set by gpu to prevent the kernel from locking up the gpu ,such as compute time is more than 25 ms on gpu.
Thx.
Phenix
Two levels of timeout can be set in the kernel driver, and are configured by the system integrator:
However in general these are relatively high timeouts designed for system stability, not for interactive scheduling of work within a process. If the foreground application is sending very large workloads to the GPU then it probably has a good reason to do so, and it really isn't the job of the GPU driver to second guess what the application developer told us to do. Even for graphics-only applications there is content which runs slower than 30 FPS especially at high resolutions - we've certainly seen some benchmarks submit single rendering operations which take longer than 200ms - and it would be "wrong" to kill those workloads.