Re: ZINK support to use libvulkan on Virtio-GPU

Marek Olšák <[email protected]>
Newsgroups gmane.comp.video.mesa3d.devel
Message-ID <CAAxE2A4y7guph-4kd_DO=u58F6m2sT_-k0U9e6Uob4yZOrJYKQ@mail.gmail.com>
virtio likely doesn't work with zink for the same reason that
xf86-video-amdgpu doesn't work with zink: the DDX doesn't support
modifiers.

Marek

On Mon, Jul 22, 2024 at 11:00 AM Mike Blumenkrantz
<[email protected]> wrote:
>
> Hi,
>
> If you aren't hitting the kopper init paths (e.g., kopper_init_screen), you're doing something wrong.
>
> I'm not sure exactly what's going on there with gfxstream, but for gbm+zink you should be getting a backtrace like this on init:
>
> #0 kopper_init_screen (screen=0x25e010, driver_name_is_inferred=false) at ../src/gallium/frontends/dri/kopper.c:117
> #1 0x00007ffff486dc77 in driCreateNewScreen3 (scrn=0, fd=7, loader_extensions=0x7ffff7e6c2e0 <gbm_dri_screen_extensions>, driver_extensions=0x7ffff72ff760 <galliumvk_driver_extensions>, driver_configs=0x25df98, driver_name_is_inferred=false, data=0x25de50) at ../src/gallium/frontends/dri/dri_util.c:140
> #2 0x00007ffff7e5cdf8 in dri_screen_create_for_driver (dri=0x25de50, driver_name=0x25dc10 "zink", driver_name_is_inferred=false) at ../src/gbm/backends/dri/gbm_dri.c:300
> #3 0x00007ffff7e5cf0d in dri_screen_create (dri=0x25de50, driver_name_is_inferred=false) at ../src/gbm/backends/dri/gbm_dri.c:337
> #4 0x00007ffff7e5f0f1 in dri_device_create (fd=7, gbm_backend_version=1) at ../src/gbm/backends/dri/gbm_dri.c:1268
> #5 0x00007ffff7e5b76f in backend_create_device (bd=0x7ffff7e6b310 <builtin_backends>, fd=7) at ../src/gbm/main/backend.c:105
> #6 0x00007ffff7e5b8d2 in find_backend (name=0x0, fd=7) at ../src/gbm/main/backend.c:163
> #7 0x00007ffff7e5ba72 in _gbm_create_device (fd=7) at ../src/gbm/main/backend.c:229
> #8 0x00007ffff7e5bbd2 in gbm_create_device (fd=7) at ../src/gbm/main/gbm.c:138
>
>
> Regards,
> Mike
>
> On Mon, Jul 22, 2024 at 10:40 AM Lei Zhou <[email protected]> wrote:
>>
>> Dear mesa/experts,
>>
>> Need your support to help us better understand how we can go about this behavior.
>>
>> Here is what we have:
>>      1.    We are running QEMU based Debian guest with -device virtio-gpu-rutabaga,gfxstream-vulkan=on,cross-domain=on.   Expect to run vulkan application eg.vkcube-wayland from guest via wayland proxy over gfxstream and wayland protocol.   Please check this link (https://www.qemu.org/docs/master/system/devices/virtio-gpu.html) for what is rutabaga/gfxstream GPU mode.     In theory,  it should be sufficient to render vkcube graphics over vulkan/gfxstream/virtio-gpu via host wayland compositor with a physical GPU driver.
>>   2.  On guest side mesa,  we compile with these options
>>       -Dgallium-drivers=radeonsi,virgl,zink -Dvulkan-drivers=virtio,amd.
>> 3.  When running $vkcube-wayland with wayland proxy,  gbm_create_device(...) will be invoked to acquire drm device resource, which will invoke driCreateNewScreen2 -> dri2_init_screen() etc.
>>
>>     within mesa/src/gallium/frontends/dri/dri2.c,  what was the intention to indicate that "no zink" will be used?
>> ===========================================
>> #ifdef HAVE_LIBDRM
>> if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd, false)) <<=== ZINK usage
>>       pscreen = pipe_loader_create_screen(screen->dev, driver_name_is_inferred);
>> #endif
>> =============================================
>>
>> 4.  In current behavior, virtio_gpu_driver_descriptor will be discovered and used.  Which will depend on "-device virtio-gpu-gl-pci" the capsets of virgl and virgl2, which is not what we are using.
>>
>>
>> Any clarification will be highly appreciated!
>>
>> Lei Zhou
>>
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.