anv: Replace anv_bo::is_winsys_bo with a uint32_t flags
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 30 Mar 2017 18:48:05 +0000 (11:48 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 5 Apr 2017 01:33:52 +0000 (18:33 -0700)
Reviewed-by: Kristian H. Kristensen <krh@bitplanet.net>
src/intel/vulkan/anv_batch_chain.c
src/intel/vulkan/anv_private.h
src/intel/vulkan/anv_wsi.c

index 5a6c0ba1a963b3314ebf3b58e9045e7b19855f07..5f0528fc8f5902fe822a967dd1e9cad7359fa404 100644 (file)
@@ -149,7 +149,7 @@ anv_reloc_list_add(struct anv_reloc_list *list,
    int index;
 
    const uint32_t domain =
-      target_bo->is_winsys_bo ? I915_GEM_DOMAIN_RENDER : 0;
+      (target_bo->flags & EXEC_OBJECT_WRITE) ? I915_GEM_DOMAIN_RENDER : 0;
 
    VkResult result = anv_reloc_list_grow(list, alloc, 1);
    if (result != VK_SUCCESS)
@@ -1036,7 +1036,7 @@ anv_execbuf_add_bo(struct anv_execbuf *exec,
       obj->relocs_ptr = 0;
       obj->alignment = 0;
       obj->offset = bo->offset;
-      obj->flags = bo->is_winsys_bo ? EXEC_OBJECT_WRITE : 0;
+      obj->flags = bo->flags;
       obj->rsvd1 = 0;
       obj->rsvd2 = 0;
    }
index dc83b4ac44ff2886ff4835f12f9aa59d7da66279..ee0f79b6ddd96abce69629be6b5a4417b97b973d 100644 (file)
@@ -295,11 +295,8 @@ struct anv_bo {
    uint64_t size;
    void *map;
 
-   /* We need to set the WRITE flag on winsys bos so GEM will know we're
-    * writing to them and synchronize uses on other rings (eg if the display
-    * server uses the blitter ring).
-    */
-   bool is_winsys_bo;
+   /** Flags to pass to the kernel through drm_i915_exec_object2::flags */
+   uint32_t flags;
 };
 
 static inline void
@@ -310,7 +307,7 @@ anv_bo_init(struct anv_bo *bo, uint32_t gem_handle, uint64_t size)
    bo->offset = -1;
    bo->size = size;
    bo->map = NULL;
-   bo->is_winsys_bo = false;
+   bo->flags = 0;
 }
 
 /* Represents a lock-free linked list of "free" things.  This is used by
index 6a0203ac30e126e8bae73cd547a524988d22ee85..6ab0f20b3d1beabcfacdcaede6460592ef3d17ca 100644 (file)
@@ -201,7 +201,12 @@ x11_anv_wsi_image_create(VkDevice device_h,
       goto fail_create_image;
 
    memory = anv_device_memory_from_handle(memory_h);
-   memory->bo.is_winsys_bo = true;
+
+   /* We need to set the WRITE flag on window system buffers so that GEM will
+    * know we're writing to them and synchronize uses on other rings (eg if
+    * the display server uses the blitter ring).
+    */
+   memory->bo.flags |= EXEC_OBJECT_WRITE;
 
    anv_BindImageMemory(device_h, image_h, memory_h, 0);