virgl: Negotiate version with vtest server
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Tue, 2 Oct 2018 07:07:31 +0000 (09:07 +0200)
committerGert Wollny <gw.fossdev@gmail.com>
Thu, 4 Oct 2018 14:18:36 +0000 (16:18 +0200)
commited53a79cf81b13e9c16517c70713a926d49a5fe6
tree094f3dc3aecef3eee5189473db8d40e95791b5eb
parent0c70e11206b28164c7cde736ce15cd183d51a7fa
virgl: Negotiate version with vtest server

Check if server supports version negotation by sending a PING_PROTOCOL_VERSION
message right before a dummy RESOURCE_BUSY_WAIT. If we don't get a reply
for the first, we know the server doesn't support it.

If it does support it, we can query the max protocol version supported
by the server and fall back if needed.

v2: - Send a new message to negotiate the protocol version, checking if
      the server supports this message by immediately sending a busy wait
      message. (Dave Airlie)

v3: - Send a zero-arg command PING_PROTOCOL_VERSION so we actually keep
      compatibility with older servers. (Code by Dave Airlie)

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c
src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.h
src/gallium/winsys/virgl/vtest/vtest_protocol.h