4

v3dv: enable multisync in the simulator

 2 years ago
source link: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14768
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

v3dv: enable multisync in the simulator (!14768) · Merge requests · Mesa

Use drmSyncobjSignal to signal out_syncobjs when a CL submission ends in the simulator. In this case, out_syncs can be signal semaphores or fences. With this, we can enable multisync support in the simulator and keep the multisync approach to process fence by submitting a serialized no-op job that adds the fence to its array of out syncobjs, i.e. drm-syncobjs to be signaled in the kernel when a job completes (job post deps).

Detached merge request pipeline #504745 passed for 70a219d4 5 months ago
Approval is optional

Test summary results are being parsed

View full report

Merged by 5 months ago (Feb 9, 2022 7:44am UTC) 5 months ago

Merge details
Pipeline #504755 waiting for manual action for 70a219d4 on main

This is only addressing the issue for CL submissions, we need to handle it for TFU and CSD as well. How are you testing this?

Resolved by Melissa Wen 6 months ago

Ok, I think we can handle signal syncobjs for TFU and CSD submissions for completeness, but, afaiu, it doesn't bring a functional change in the simulator operations.

I only addressed CL submission because we never use TFU or CSD jobs to signal fences. I understood that all jobs are serialized in the simulator and I don't see the issue in TFU and CSD jobs, so I thought I should reduce calling drm ioctls here that doesn't bring a real change. The issue doesn't include TFU and CSD jobs because, for all GPU jobs, we are using a syncobj in last_job_sync to signal when the job completes, but all syncobjs in last_job_sync are created signalled. Therefore, their states never change to unsignalled since in/out syncobjs are ignored in the simulator.

But unlike last_job_sync syncobjs, fences are not always created signalled and tests expect that their states change to signal at some point. When multisync is enabled, we stop using a signalled syncobj from last_job_sync[queue_any] to signal the fence (via export/import sync file) and start to emit a no-op job, which is a CL job, to signal fence as part of this job out-syncobjs array. But, as said before, we weren't handling out syncobjs in the simulator and therefore this fence never changes its state if we don't explicitly signal it when the job finishes. Hmm.. maybe I should add a comment with this explanation too.

I only tested locally with dEQP-VK.texture/(some)api/synchronization in the simulator. I also compared test results with/without signalling the last out syncobj in the out-syncobj array - if the fence is in an out-syncobj array, it will be the last element. Is it possible to run the full-CI on the simulator?


Recommend

  • 10
    • blogs.igalia.com 4 years ago
    • Cache

    V3DV + Zink

    V3DV + Zink November 5, 2020 During my presentation at the X Developers Conference I...

  • 13
    • blogs.igalia.com 4 years ago
    • Cache

    v3dv status update 2020-09-07

    So here a new update of the evolution of the Vulkan driver for the rpi4 (broadcom GPU). Features Since my last update we finished the supp...

  • 8

    Macs are case insensitive, but the iOS Simulator uses a hidden option in macOS’s kernel to enable case sensitivity, to match real iOS devices. This option can also be set with macOS’s taskpolicy tool, so you can launch any macOS...

  • 16

    V3DV Vulkan driver update: VkQuake1-3 now working July 23, 2020 A few weeks ago we shared an

  • 5
    • blogs.igalia.com 4 years ago
    • Cache

    v3dv status update 2020-07-01

    About three weeks ago there was a big announcement about the update of the status of the Vulkan effort for the Raspberry Pi 4. Now the source code is pu...

  • 9
    • blogs.igalia.com 4 years ago
    • Cache

    v3dv status update 2020-07-31

    v3dv status update 2020-07-31 Iago talked recently about the work done testing and supporting well known applications, like the Vulkan ports of t...

  • 6
    • gitlab.freedesktop.org 2 years ago
    • Cache

    v3dv: enable multiple semaphores for tfu job

    v3dv: enable multiple semaphores for tfu job Whenever v3d kernel-driver supports multisync extension, use it to enable more than one semaphores in a tfu job. Signed-off-by:

  • 5
    • gitlab.freedesktop.org 2 years ago
    • Cache

    v3dv: enable GPU jobs to signal multiple semaphores

    Commit fd973218 authored 8 months ago by Melissa Wen

  • 4
    • gitlab.freedesktop.org 2 years ago
    • Cache

    v3dv: enable multiple semaphores on cl submission

    v3dv: enable multiple semaphores on cl submission Whenever v3d kernel-driver supports multisync extension, use it to enable more than one semaphores in cl submission. In CL, we have two kind of job (bin and render), therefore, we ne...

  • 4
    • gitlab.freedesktop.org 2 years ago
    • Cache

    v3dv: enable multiple semaphores for csd job

    v3dv: enable multiple semaphores for csd job Whenever v3d kernel-driver supports multisync extension, use it to allow add multiple semaphores as csd job dependency. Signed-off-by:

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK