Question: error when running [Virtio-GPU Venus->vtest]

sysescool sysescool at gmail.com
Wed Nov 9 03:13:49 UTC 2022


  On 2022-11-08 18:35, Gert Wollny wrote:
> Hello,
>
> On Sun, 2022-11-06 at 11:33 -0800, Rob Clark wrote:
>> On Fri, Nov 4, 2022 at 1:42 AM Taylor Viktor<sysescool at gmail.com>
>> wrote:
>>> Dear Developers:
>>>
>>> I am referring to this document
>>> https://docs.mesa3d.org/drivers/venus.html#vtest  to develop vulkan
>>> related functions, but every time I run vulkaninfo or vkcube some
>>> errors occur.
>>>
>>> virgl_test_server prints the following:
>>>
>>>      gl_version 46 - core profile enabled
>>>      vtest_client_dispatch_commands: client context created.
>>>      client failed: VTEST_CLIENT_ERROR_INPUT_READ
>>>
>>> Running vulkaninfo prints the following:
>>>
>>>      WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 0.  Skipping ICD.
>>>      Cannot create Vulkan instance.
>>>      This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan.
>>>      ERROR at ./vulkaninfo/vulkaninfo.h:649:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
>>>
>>> Running vkcube prints the following:
>>>
>>>      Cannot find a compatible Vulkan installable client driver (ICD).
>>>      Please look at the Getting Started guide for additional information.
>>>
>>> After debugging, I found that the error occurred when calling the system function
>>>      res = read(fd, ptr, left)
>>> in the
>>>      vtest_block_read(struct vtest_input *input, void *buf, int size)
>>> function, it returned 0 to the variable res,
>>> but The variable left passed in is 8. This is only true if(res == left).
>>>
>>>
>>> And I checked the Requirements by running below command: vulkaninfo 
>>> | grep "Vulkan Instance Version" vulkaninfo | grep 
>>> VK_EXT_external_memory_dma_buf vulkaninfo | grep 
>>> VK_EXT_image_drm_format_modifier vulkaninfo | grep 
>>> VK_EXT_queue_family_foreign uname -r the output: Vulkan Instance 
>>> Version: 1.3.204 VK_EXT_external_memory_dma_buf : extension revision 
>>> 1 VK_EXT_image_drm_format_modifier : extension revision 2 
>>> VK_EXT_queue_family_foreign : extension revision 1 5.15.0-52-generic 
>>> Except the graphics card is GTX 1060 3GB, I think my other 
>>> requirements are met. I use vtest, which can ignore the kernel 
>>> version according to the documentation. When you were testing, what 
>>> versions of virglrenderer and mesa were you using? If you guys know, 
>>> please let me know and I will try it again. If you don't know the 
>>> specific version, can you give me some debugging or method 
>>> suggestions? Looking forward to your reply, thank you very much
>> I'm not sure about the venus/vk case, but I got the same error when
>> trying to use virgl+vtest the other day.  I think this must have
>> broken semi-recently, but didn't try to bisect or figure out if the
>> issue was in mesa or virglrenderer
> The error message
>     "client failed: VTEST_CLIENT_ERROR_INPUT_READ"
> is also emitted when the guest client exits normally, this is a bit
> unfortunate, but IMSMR it was not possible to distinguish between the
> client just finishing or whether something had gone wrong with the file
> descriptor.
>
> AFAIR this has been printed since the beginning, and OpenGL should just
> work fine (it does for me), but gives above sever side output.
>
> As for Venus, for me I can run vulkaninfo just fine, and for vkcube I
> get a client side error, complete client side output is:
>
>
>    ./vkcube
>    1 physical devices
>    vendor id 1002, device name Virtio-GPU Venus (AMD Radeon RX 6700 XT
> (RADV NAVI22))
>    vkcube: ../src/virtio/vulkan/vn_queue.c:164:
>    vn_queue_submission_prepare:
>     Assertion `!submit->wsi_mem->base_memory && submit->wsi_mem-
>> base_bo' failed.
> Aborted
>
> (The same assertion is triggered on Intel)
>
> You can also try these server side options:
>
>     --no-fork and --multi-client
>
> They make no difference for me, I just know that at the beginning they
> were needed.
>
> Hope that helps,
> Gert
>
Thank you,  Gert.

I've added the entire previous letter to show the full error and problem.
* Do you remember the version of virglrenderer and mesa you were using? *

I tried something to handle:

1. I downloaded the source from KhronosGroup/Vulkan-Tools and compiled 
it with version tag v1.3.204.
* Is the normal operation of mesa and virglrenderer related to the 
version of Vulkan-Tools? *
  i) dll.fp_vkEnumerateInstanceVersion(&instance_version) in struct 
AppInstance::AppInstance() return version: 4206796
      I am not sure if this version number is correct.
ii) socket established and closed at line
              VkResult err = dll.fp_vkCreateInstance(&inst_info, 
nullptr, &instance);
      and which returned the error VK_ERROR_INCOMPATIBLE_DRIVER.

2. I tried with command strace to trace vulkaninfo, and noticed that 
there is a shutdown system call close the socket normally.
(BTW, ltrace didn't work with vulkaninfo to trace libvulkan_virtio.so)
However, after socket close, the virglrenderer still keep reading from 
the fd and the reason why is
           client->in_fd_ready = true. in 
vtest_server_wait_clients(void) in file vtest_server.c

3. I tried --no-fork and --multi-client too. They make no difference for 
me too, and there is still error.

4. something unrelated but not mentioned

** The biggest problem currently bothering me is: I don't have a good 
way to trace calls to libvulkan_virtio.so **
any suggestion?

BR
-S
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20221109/5a593de9/attachment.htm>


More information about the mesa-dev mailing list