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

sysescool <[email protected]>
Newsgroups gmane.comp.video.mesa3d.devel
Message-ID <[email protected]>
  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<[email protected]>
>> 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
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.