anv: Add func anv_gem_get_tiling()
authorChad Versace <chadversary@chromium.org>
Tue, 29 Aug 2017 08:34:44 +0000 (01:34 -0700)
committerChad Versace <chadversary@chromium.org>
Tue, 17 Oct 2017 18:08:26 +0000 (11:08 -0700)
Will use in VK_ANDROID_native_buffer.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_gem.c
src/intel/vulkan/anv_private.h

index 3994c6b66c2d43afc6977e1076e122acd613ad6b..34c0989108653edd60a31663da905563208d98bd 100644 (file)
@@ -192,6 +192,22 @@ anv_gem_execbuffer(struct anv_device *device,
       return anv_ioctl(device->fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf);
 }
 
+/** Return -1 on error. */
+int
+anv_gem_get_tiling(struct anv_device *device, uint32_t gem_handle)
+{
+   struct drm_i915_gem_get_tiling get_tiling = {
+      .handle = gem_handle,
+   };
+
+   if (anv_ioctl(device->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling)) {
+      assert(!"Failed to get BO tiling");
+      return -1;
+   }
+
+   return get_tiling.tiling_mode;
+}
+
 int
 anv_gem_set_tiling(struct anv_device *device,
                    uint32_t gem_handle, uint32_t stride, uint32_t tiling)
index 27d2c3420330645021a25190435389830422a748..8af3f5c69e18e0a616f2f8073fef776b7f77ccb0 100644 (file)
@@ -929,6 +929,7 @@ int anv_gem_destroy_context(struct anv_device *device, int context);
 int anv_gem_get_context_param(int fd, int context, uint32_t param,
                               uint64_t *value);
 int anv_gem_get_param(int fd, uint32_t param);
+int anv_gem_get_tiling(struct anv_device *device, uint32_t gem_handle);
 bool anv_gem_get_bit6_swizzle(int fd, uint32_t tiling);
 int anv_gem_get_aperture(int fd, uint64_t *size);
 bool anv_gem_supports_48b_addresses(int fd);