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

2022-11-08 Thread Gert Wollny
Hello, 



On Sun, 2022-11-06 at 11:33 -0800, Rob Clark wrote:
> On Fri, Nov 4, 2022 at 1:42 AM Taylor Viktor 
> 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_READvulkaninfo
> 
> 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 



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

2022-11-08 Thread sysescool


 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
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