[igt-dev] [PATCH i-g-t 1/3] lib/i915: Return actual submission method from gem_submission_method
John Harrison
john.c.harrison at intel.com
Sat Oct 30 00:42:19 UTC 2021
On 10/28/2021 17:31, Dixit, Ashutosh wrote:
> On Thu, 28 Oct 2021 16:55:32 -0700, John Harrison wrote:
>> On 10/27/2021 21:40, Ashutosh Dixit wrote:
>>> gem_submission_method() purports to return the currently used submission
>>> method by the kernel, as evidenced by its callers. Therefore remove the
>>> GEM_SUBMISSION_EXECLISTS flag when GuC submission is detected.
>>>
>>> This also fixes gem_has_execlists() to match its description, previously
>>> gem_has_execlists() would return true even if GuC submission was actually
>>> being used in the driver.
>>>
>>> v2: Or gem_has_execlists call-sites with gem_has_guc_submission to make the
>>> new code equivalent to the previous code.
>>> v3: Clarify that submission method is either guc (0x4), execlists (0x2) or
>>> legacy without semaphores (0x0) or legacy with semaphores (0x1)
>> What about GuC with semaphores vs GuC without semaphores? Likewise execlist.
>>
>> Semaphores is not a submission method. They are a submission feature whose
>> support or lack there of is independent of the submission method.
> Sorry I didn't know that. But if you see gem_submission_method() in current
> upstream IGT (pasted below) it doesn't return "GuC with semaphores' or
> "execlist with semaphores" either. Anyway, let me do this in the next
> rev. Thanks.
I mean that in the old code:
"GuC with semaphores" == is_guc_submission() && has_semaphores()
But if you conflate semaphores with the submission method then you have
to explicitly enumerate all combinations.
Hmm, okay. Just realised that the old code did indeed have
GEM_SUBMISSION_SEMAPHORES. Not sure what that was about!? You can
definitely have semaphores with GuC/execlists and you can definitely
have GuC/execlists without semaphores. I don't see why ring buffer
submission would be any different but I admit it's been a while since
I've looked at any ring buffer code.
It doesn't look like anything was actually using 'gem_has_semaphores()'
at all, though. So nothing would notice if it was removed ;).
John.
>
> unsigned gem_submission_method(int fd)
> {
> const int gen = intel_gen(intel_get_drm_devid(fd));
> unsigned flags = 0;
>
> int dir;
>
> dir = igt_params_open(fd);
> if (dir < 0)
> return 0;
>
> if (igt_sysfs_get_u32(dir, "enable_guc") & 1) {
> flags |= GEM_SUBMISSION_GUC | GEM_SUBMISSION_EXECLISTS;
> goto out;
> }
>
> if (gen >= 8) {
> flags |= GEM_SUBMISSION_EXECLISTS;
> goto out;
> }
>
> if (has_semaphores(fd, dir))
> flags |= GEM_SUBMISSION_SEMAPHORES;
>
> out:
> close(dir);
> return flags;
> }
More information about the igt-dev
mailing list