OSDN Git Service

minigbm: virtio-gpu: pass more bind flags
authorDavid Stevens <stevensd@chromium.org>
Tue, 3 Sep 2019 01:45:33 +0000 (10:45 +0900)
committerchrome-bot <chrome-bot@chromium.org>
Fri, 27 Sep 2019 06:48:36 +0000 (23:48 -0700)
Change-Id: I771b5e7ce8e028477570bff8bc7eee6822aaf22b
Reviewed-on: https://chromium-review.googlesource.com/1786418
Tested-by: David Stevens <stevensd@chromium.org>
Commit-Ready: David Stevens <stevensd@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
virgl_hw.h
virtio_gpu.c

index 94e1d5e..8c169a7 100644 (file)
@@ -288,6 +288,8 @@ enum virgl_formats {
 
 #define VIRGL_BIND_PREFER_EMULATED_BGRA  (1 << 21)
 
+#define VIRGL_BIND_LINEAR (1 << 22)
+
 struct virgl_caps_bool_set1 {
         unsigned indep_blend_enable:1;
         unsigned indep_blend_func:1;
index 3570a5f..9e5b0ba 100644 (file)
@@ -94,7 +94,19 @@ static uint32_t use_flags_to_bind(uint64_t use_flags)
        handle_flag(&use_flags, BO_USE_TEXTURE, &bind, VIRGL_BIND_SAMPLER_VIEW);
        handle_flag(&use_flags, BO_USE_RENDERING, &bind, VIRGL_BIND_RENDER_TARGET);
        handle_flag(&use_flags, BO_USE_SCANOUT, &bind, VIRGL_BIND_SCANOUT);
-       // TODO (b/12983436): handle other use flags.
+       handle_flag(&use_flags, BO_USE_CURSOR, &bind, VIRGL_BIND_CURSOR);
+       handle_flag(&use_flags, BO_USE_LINEAR, &bind, VIRGL_BIND_LINEAR);
+
+       handle_flag(&use_flags, BO_USE_SW_READ_OFTEN, &bind, VIRGL_BIND_LINEAR);
+       handle_flag(&use_flags, BO_USE_SW_READ_RARELY, &bind, VIRGL_BIND_LINEAR);
+       handle_flag(&use_flags, BO_USE_SW_WRITE_OFTEN, &bind, VIRGL_BIND_LINEAR);
+       handle_flag(&use_flags, BO_USE_SW_WRITE_RARELY, &bind, VIRGL_BIND_LINEAR);
+
+       // All host drivers only support linear camera buffer formats. If
+       // that changes, this will need to be modified.
+       handle_flag(&use_flags, BO_USE_CAMERA_READ, &bind, VIRGL_BIND_LINEAR);
+       handle_flag(&use_flags, BO_USE_CAMERA_WRITE, &bind, VIRGL_BIND_LINEAR);
+
        if (use_flags) {
                drv_log("Unhandled bo use flag: %llx\n", (unsigned long long)use_flags);
        }