Quoting Matthew Auld (2019-02-14 14:57:32) > int i915_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file) > diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h > index 26d2274b5d2b..5a102a5cb415 100644 > --- a/include/uapi/drm/i915_drm.h > +++ b/include/uapi/drm/i915_drm.h > @@ -1744,6 +1744,7 @@ struct drm_i915_perf_oa_config { > struct drm_i915_query_item { > __u64 query_id; > #define DRM_I915_QUERY_TOPOLOGY_INFO 1 > +#define DRM_I915_QUERY_MEMREGION_INFO 3 Ahem. > /* > * When set to zero by userspace, this is filled with the size of the > @@ -1832,7 +1833,6 @@ struct drm_i915_query_topology_info { > * Offset in data[] at which the EU masks are stored. > */ > __u16 eu_offset; > - > /* > * Stride at which each of the EU masks for each subslice are stored. > */ > @@ -1841,6 +1841,44 @@ struct drm_i915_query_topology_info { > __u8 data[]; > }; > > +struct drm_i915_memory_region_info { > + > + /** Base type of a region > + */ > +#define I915_SYSTEM_MEMORY 0 > +#define I915_DEVICE_MEMORY 1 > + > + /** The region id is encoded in a layout which makes it possible to > + * retrieve the following information: > + * > + * Base type: log2(ID >> 16) > + * Instance: log2(ID & 0xffff) > + */ > + __u32 id; > + > + /** Reserved field. MBZ */ > + __u32 rsvd0; > + > + /** Unused for now. MBZ */ > + __u64 flags; > + > + __u64 size; > + > + /** Reserved fields must be cleared to zero. */ > + __u64 rsvd1[4]; > +}; If you were to apply this to stolen memory as an example, can you spot how much information is missing? Userspace would need to know total size, largest allocation chunk (i.e largest object), rough estimate of availability, and most importantly a list of API that is not allowed (such as CPU mmap, fencing). There's without a doubt more that would be needed to actually wire it up to Vk. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx