drm/xe/uapi: Separate bo_create placement from flags
Although the flags are about the creation, the memory placement of the BO deserves a proper dedicated field in the uapi. Besides getting more clear, it also allows to remove the 'magic' shifts from the flags that was a concern during the uapi reviews. Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Francois Dugast <francois.dugast@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
This commit is contained in:
parent
c4ad3710f5
commit
6b8c1edc4f
@ -1890,15 +1890,15 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1]))
|
||||
return -EINVAL;
|
||||
|
||||
/* at least one valid memory placement must be specified */
|
||||
if (XE_IOCTL_DBG(xe, (args->placement & ~xe->info.mem_region_mask) ||
|
||||
!args->placement))
|
||||
return -EINVAL;
|
||||
|
||||
if (XE_IOCTL_DBG(xe, args->flags &
|
||||
~(DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING |
|
||||
DRM_XE_GEM_CREATE_FLAG_SCANOUT |
|
||||
DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM |
|
||||
xe->info.mem_region_mask)))
|
||||
return -EINVAL;
|
||||
|
||||
/* at least one memory type must be specified */
|
||||
if (XE_IOCTL_DBG(xe, !(args->flags & xe->info.mem_region_mask)))
|
||||
DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM)))
|
||||
return -EINVAL;
|
||||
|
||||
if (XE_IOCTL_DBG(xe, args->handle))
|
||||
@ -1920,7 +1920,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
if (args->flags & DRM_XE_GEM_CREATE_FLAG_SCANOUT)
|
||||
bo_flags |= XE_BO_SCANOUT_BIT;
|
||||
|
||||
bo_flags |= args->flags << (ffs(XE_BO_CREATE_SYSTEM_BIT) - 1);
|
||||
bo_flags |= args->placement << (ffs(XE_BO_CREATE_SYSTEM_BIT) - 1);
|
||||
|
||||
if (args->flags & DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM) {
|
||||
if (XE_IOCTL_DBG(xe, !(bo_flags & XE_BO_CREATE_VRAM_MASK)))
|
||||
|
@ -500,8 +500,11 @@ struct drm_xe_gem_create {
|
||||
*/
|
||||
__u64 size;
|
||||
|
||||
#define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (0x1 << 24)
|
||||
#define DRM_XE_GEM_CREATE_FLAG_SCANOUT (0x1 << 25)
|
||||
/** @placement: A mask of memory instances of where BO can be placed. */
|
||||
__u32 placement;
|
||||
|
||||
#define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0)
|
||||
#define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1)
|
||||
/*
|
||||
* When using VRAM as a possible placement, ensure that the corresponding VRAM
|
||||
* allocation will always use the CPU accessible part of VRAM. This is important
|
||||
@ -517,7 +520,7 @@ struct drm_xe_gem_create {
|
||||
* display surfaces, therefore the kernel requires setting this flag for such
|
||||
* objects, otherwise an error is thrown on small-bar systems.
|
||||
*/
|
||||
#define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (0x1 << 26)
|
||||
#define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2)
|
||||
/**
|
||||
* @flags: Flags, currently a mask of memory instances of where BO can
|
||||
* be placed
|
||||
|
Loading…
x
Reference in New Issue
Block a user