[PATCH v2 0/9] gfxstream + rutabaga_gfx

Gurchetan Singh posted 9 patches 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230801011723.627-1-gurchetansingh@chromium.org
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Eduardo Habkost <eduardo@habkost.net>
There is a newer version of this series
docs/system/device-emulation.rst     |    1 +
docs/system/devices/virtio-gpu.rst   |   98 +++
hw/display/meson.build               |   22 +
hw/display/virtio-gpu-base.c         |    6 +-
hw/display/virtio-gpu-pci-rutabaga.c |   48 ++
hw/display/virtio-gpu-pci.c          |   14 +
hw/display/virtio-gpu-rutabaga.c     | 1077 ++++++++++++++++++++++++++
hw/display/virtio-gpu.c              |   17 +-
hw/display/virtio-vga-rutabaga.c     |   52 ++
hw/display/virtio-vga.c              |   33 +-
hw/virtio/virtio-pci.c               |   18 +
include/hw/virtio/virtio-gpu-bswap.h |   18 +
include/hw/virtio/virtio-gpu.h       |   41 +
include/hw/virtio/virtio-pci.h       |    4 +
meson.build                          |    7 +
meson_options.txt                    |    2 +
scripts/meson-buildoptions.sh        |    3 +
softmmu/qdev-monitor.c               |    3 +
softmmu/vl.c                         |    1 +
19 files changed, 1445 insertions(+), 20 deletions(-)
create mode 100644 docs/system/devices/virtio-gpu.rst
create mode 100644 hw/display/virtio-gpu-pci-rutabaga.c
create mode 100644 hw/display/virtio-gpu-rutabaga.c
create mode 100644 hw/display/virtio-vga-rutabaga.c
[PATCH v2 0/9] gfxstream + rutabaga_gfx
Posted by Gurchetan Singh 9 months ago
Latest iteration of rutabaga_gfx + gfxstream patches.  Previous versions
available here:

https://patchew.org/QEMU/20230711025649.708-1-gurchetansingh@chromium.org/

https://patchew.org/QEMU/20230421011223.718-1-gurchetansingh@chromium.org/

Changes since v1:
- New error callback hooked into QEMU error's handlers
- Incorporated review feedback
- goldfish-opengl repo is now gone: new unified repo for guest and host

How to build both rutabaga and gfxstream guest/host libs:

https://crosvm.dev/book/appendix/rutabaga_gfx.html

Branch containing this patch series:

https://gitlab.freedesktop.org/gurchetansingh/qemu-gfxstream/-/commits/qemu-gfxstream-v2

Next steps:
 - Will add a v0.1.2 release "commit" after this patch series is fully
   reviewed, but before it's merged

Antonio Caggiano (2):
  virtio-gpu: CONTEXT_INIT feature
  virtio-gpu: blob prep

Dr. David Alan Gilbert (1):
  virtio: Add shared memory capability

Gerd Hoffmann (1):
  virtio-gpu: hostmem

Gurchetan Singh (5):
  gfxstream + rutabaga prep: added need defintions, fields, and options
  gfxstream + rutabaga: add initial support for gfxstream
  gfxstream + rutabaga: meson support
  gfxstream + rutabaga: enable rutabaga
  docs/system: add basic virtio-gpu documentation

 docs/system/device-emulation.rst     |    1 +
 docs/system/devices/virtio-gpu.rst   |   98 +++
 hw/display/meson.build               |   22 +
 hw/display/virtio-gpu-base.c         |    6 +-
 hw/display/virtio-gpu-pci-rutabaga.c |   48 ++
 hw/display/virtio-gpu-pci.c          |   14 +
 hw/display/virtio-gpu-rutabaga.c     | 1077 ++++++++++++++++++++++++++
 hw/display/virtio-gpu.c              |   17 +-
 hw/display/virtio-vga-rutabaga.c     |   52 ++
 hw/display/virtio-vga.c              |   33 +-
 hw/virtio/virtio-pci.c               |   18 +
 include/hw/virtio/virtio-gpu-bswap.h |   18 +
 include/hw/virtio/virtio-gpu.h       |   41 +
 include/hw/virtio/virtio-pci.h       |    4 +
 meson.build                          |    7 +
 meson_options.txt                    |    2 +
 scripts/meson-buildoptions.sh        |    3 +
 softmmu/qdev-monitor.c               |    3 +
 softmmu/vl.c                         |    1 +
 19 files changed, 1445 insertions(+), 20 deletions(-)
 create mode 100644 docs/system/devices/virtio-gpu.rst
 create mode 100644 hw/display/virtio-gpu-pci-rutabaga.c
 create mode 100644 hw/display/virtio-gpu-rutabaga.c
 create mode 100644 hw/display/virtio-vga-rutabaga.c

-- 
2.41.0.585.gd2178a4bd4-goog
Re: [PATCH v2 0/9] gfxstream + rutabaga_gfx
Posted by Alyssa Ross 9 months ago
I was able to replicate my existing crosvm cross-domain testing setup
using QEMU, and all worked.  I didn't test any other capsets.

Tested-by: Alyssa Ross <hi@alyssa.is>
Re: [PATCH v2 0/9] gfxstream + rutabaga_gfx
Posted by Akihiko Odaki 9 months ago
On 2023/08/01 10:17, Gurchetan Singh wrote:
> Latest iteration of rutabaga_gfx + gfxstream patches.  Previous versions
> available here:
> 
> https://patchew.org/QEMU/20230711025649.708-1-gurchetansingh@chromium.org/
> 
> https://patchew.org/QEMU/20230421011223.718-1-gurchetansingh@chromium.org/
> 
> Changes since v1:
> - New error callback hooked into QEMU error's handlers
> - Incorporated review feedback
> - goldfish-opengl repo is now gone: new unified repo for guest and host
> 
> How to build both rutabaga and gfxstream guest/host libs:
> 
> https://crosvm.dev/book/appendix/rutabaga_gfx.html

It's nice to see a documentation for this. The below are some comments:

Why not install dependencies in one command?
sudo apt install libdrm libglm-dev libstb-dev

The cmake command for AEMU is broken into two lines but the newline 
character between them are not escaped. It should be one line or the 
newline should be escaped.

It also gives a warning:
CMake Warning:
   Ignoring extra path from command line:

    "../"

And it's probably better to have a dedicated build directory. /build is 
in .gitignore so you may:
cmake -DAEMU_COMMON_GEN_PKGCONFIG=ON \
       -DAEMU_COMMON_BUILD_CONFIG=gfxstream \
       -DENABLE_VKCEREAL_TESTS=OFF -B build

It's also better to use the following commands to build and install it 
just in case the system has a different backend (like Ninja):
cmake --build build -j
sudo cmake --install build

The build directory of gfxstream may be named just "build" so that you 
can blindly copy the command on Arm64 or whatever and to ignore it with 
.gitignore.

You may build and install it with the following command:
meson install -C build
No need for separate build command and sudo. Meson takes care of that.

The documentation has one command for building and installing Rutabaga, 
but that may cause a problem. For example, you may have rustup 
configured for a normal user but not for the superuser. Perhaps it's 
better not to have "build" as a dependency of "install" and have two 
commands for each of the steps:
make
sudo make install

> 
> Branch containing this patch series:
> 
> https://gitlab.freedesktop.org/gurchetansingh/qemu-gfxstream/-/commits/qemu-gfxstream-v2
> 
> Next steps:
>   - Will add a v0.1.2 release "commit" after this patch series is fully
>     reviewed, but before it's merged
> 
> Antonio Caggiano (2):
>    virtio-gpu: CONTEXT_INIT feature
>    virtio-gpu: blob prep
> 
> Dr. David Alan Gilbert (1):
>    virtio: Add shared memory capability
> 
> Gerd Hoffmann (1):
>    virtio-gpu: hostmem
> 
> Gurchetan Singh (5):
>    gfxstream + rutabaga prep: added need defintions, fields, and options
>    gfxstream + rutabaga: add initial support for gfxstream
>    gfxstream + rutabaga: meson support
>    gfxstream + rutabaga: enable rutabaga
>    docs/system: add basic virtio-gpu documentation
> 
>   docs/system/device-emulation.rst     |    1 +
>   docs/system/devices/virtio-gpu.rst   |   98 +++
>   hw/display/meson.build               |   22 +
>   hw/display/virtio-gpu-base.c         |    6 +-
>   hw/display/virtio-gpu-pci-rutabaga.c |   48 ++
>   hw/display/virtio-gpu-pci.c          |   14 +
>   hw/display/virtio-gpu-rutabaga.c     | 1077 ++++++++++++++++++++++++++
>   hw/display/virtio-gpu.c              |   17 +-
>   hw/display/virtio-vga-rutabaga.c     |   52 ++
>   hw/display/virtio-vga.c              |   33 +-
>   hw/virtio/virtio-pci.c               |   18 +
>   include/hw/virtio/virtio-gpu-bswap.h |   18 +
>   include/hw/virtio/virtio-gpu.h       |   41 +
>   include/hw/virtio/virtio-pci.h       |    4 +
>   meson.build                          |    7 +
>   meson_options.txt                    |    2 +
>   scripts/meson-buildoptions.sh        |    3 +
>   softmmu/qdev-monitor.c               |    3 +
>   softmmu/vl.c                         |    1 +
>   19 files changed, 1445 insertions(+), 20 deletions(-)
>   create mode 100644 docs/system/devices/virtio-gpu.rst
>   create mode 100644 hw/display/virtio-gpu-pci-rutabaga.c
>   create mode 100644 hw/display/virtio-gpu-rutabaga.c
>   create mode 100644 hw/display/virtio-vga-rutabaga.c
>