[SYCL][XPTI] Improvements to allow framework/app software level layers to provide code locations for sycl generated XPTI events.
It is useful for framework software layers which uses sycl in their implementation (like IPEX) to provide framework level code location information for XPTI events generated by sycl. This allows a framework specific instrumentation tool to capture sycl XPTI events with code location information coming from the framework level. This allows the specific instrumentation tool, for example, to capture sycl stream task_begin and task_end events and correlate the specific execution with the upper layer graph node (or application level name of work) that this task represents by querying the payload attached to the events.
The change does not require any new APIs or ABI change, to capture a code location the framework software layer should instantiate the existing sycl::detail::tls_code_loc_t object before calling a sycl entry point (usually queue.submit or graph.add).
There are 3 commits in this PR:
- Change all sycl entry points that tries to set code location in TLS to use the code location that is already set in TLS, if one is set. Instead of passing on the entry point code location at any case.
- Payload for kernel execution commands uses the kernel name in place of the function name from code location. This changes this behavior in case that the upper layer software has captured code location in TLS before calling sycl.
- Fixes XPTI events in graph mode, some events were missing when bypassing scheduler.