diff options
Diffstat (limited to 'shared-core')
| -rw-r--r-- | shared-core/drm.h | 83 | ||||
| -rw-r--r-- | shared-core/i915_dma.c | 5 | ||||
| -rw-r--r-- | shared-core/i915_drm.h | 101 | ||||
| -rw-r--r-- | shared-core/i915_drv.h | 20 | 
4 files changed, 113 insertions, 96 deletions
| diff --git a/shared-core/drm.h b/shared-core/drm.h index 2373a22e..6012ef21 100644 --- a/shared-core/drm.h +++ b/shared-core/drm.h @@ -959,69 +959,12 @@ struct drm_mm_info_arg {  	uint64_t p_size;  }; - -struct drm_gem_create { -	/** -	 * Requested size for the object. -	 * -	 * The (page-aligned) allocated size for the object will be returned. -	 */ -	uint64_t size; -	/** -	 * Returned handle for the object. -	 * -	 * Object handles are nonzero. -	 */ -	uint32_t handle; -	uint32_t pad; -}; -  struct drm_gem_close {  	/** Handle of the object to be closed. */  	uint32_t handle;  	uint32_t pad;  }; -struct drm_gem_pread { -	/** Handle for the object being read. */ -	uint32_t handle; -	uint32_t pad; -	/** Offset into the object to read from */ -	uint64_t offset; -	/** Length of data to read */ -	uint64_t size; -	/** Pointer to write the data into. */ -	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */ -}; - -struct drm_gem_pwrite { -	/** Handle for the object being written to. */ -	uint32_t handle; -	uint32_t pad; -	/** Offset into the object to write to */ -	uint64_t offset; -	/** Length of data to write */ -	uint64_t size; -	/** Pointer to read the data from. */ -	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */ -}; - -struct drm_gem_mmap { -	/** Handle for the object being mapped. */ -	uint32_t handle; -	uint32_t pad; -	/** Offset in the object to map. */ -	uint64_t offset; -	/** -	 * Length of data to map. -	 * -	 * The value will be page-aligned. -	 */ -	uint64_t size; -	/** Returned pointer the data was mapped at */ -	uint64_t addr_ptr;	/* void *, but pointers are not 32/64 compatible */ -}; -  struct drm_gem_flink {  	/** Handle for the object being named */  	uint32_t handle; @@ -1041,19 +984,6 @@ struct drm_gem_open {  	uint64_t size;  }; -struct drm_gem_set_domain { -	/** Handle for the object */ -	uint32_t handle; - -	/** New read domains */ -	uint32_t read_domains; - -	/** New write domain */ -	uint32_t write_domain; -}; - -#define DRM_GEM_DOMAIN_CPU		0x00000001 -  /**   * \name Ioctls Definitions   */ @@ -1075,6 +1005,10 @@ struct drm_gem_set_domain {  #define DRM_IOCTL_SET_VERSION		DRM_IOWR(0x07, struct drm_set_version)  #define DRM_IOCTL_MODESET_CTL           DRM_IOW(0x08,  struct drm_modeset_ctl) +#define DRM_IOCTL_GEM_CLOSE		DRM_IOW (0x09, struct drm_gem_close) +#define DRM_IOCTL_GEM_FLINK		DRM_IOWR(0x0a, struct drm_gem_flink) +#define DRM_IOCTL_GEM_OPEN		DRM_IOWR(0x0b, struct drm_gem_open) +  #define DRM_IOCTL_SET_UNIQUE		DRM_IOW( 0x10, struct drm_unique)  #define DRM_IOCTL_AUTH_MAGIC		DRM_IOW( 0x11, struct drm_auth)  #define DRM_IOCTL_BLOCK			DRM_IOWR(0x12, struct drm_block) @@ -1122,15 +1056,6 @@ struct drm_gem_set_domain {  #define DRM_IOCTL_UPDATE_DRAW           DRM_IOW(0x3f, struct drm_update_draw) -#define DRM_IOCTL_GEM_CREATE		DRM_IOWR(0x09, struct drm_gem_create) -#define DRM_IOCTL_GEM_CLOSE		DRM_IOW (0x0a, struct drm_gem_close) -#define DRM_IOCTL_GEM_PREAD		DRM_IOW (0x0b, struct drm_gem_pread) -#define DRM_IOCTL_GEM_PWRITE		DRM_IOW (0x0c, struct drm_gem_pwrite) -#define DRM_IOCTL_GEM_MMAP		DRM_IOWR(0x0d, struct drm_gem_mmap) -#define DRM_IOCTL_GEM_FLINK		DRM_IOWR(0x0e, struct drm_gem_flink) -#define DRM_IOCTL_GEM_OPEN		DRM_IOWR(0x0f, struct drm_gem_open) -#define DRM_IOCTL_GEM_SET_DOMAIN	DRM_IOW (0xb7, struct drm_gem_set_domain) -  #define DRM_IOCTL_MM_INIT               DRM_IOWR(0xc0, struct drm_mm_init_arg)  #define DRM_IOCTL_MM_TAKEDOWN           DRM_IOWR(0xc1, struct drm_mm_type_arg)  #define DRM_IOCTL_MM_LOCK               DRM_IOWR(0xc2, struct drm_mm_type_arg) diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index 4243b4e9..7e4de18b 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -1190,6 +1190,11 @@ struct drm_ioctl_desc i915_ioctls[] = {  	DRM_IOCTL_DEF(DRM_I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH),  	DRM_IOCTL_DEF(DRM_I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH),  	DRM_IOCTL_DEF(DRM_I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH), +	DRM_IOCTL_DEF(DRM_I915_GEM_CREATE, i915_gem_create_ioctl, 0), +	DRM_IOCTL_DEF(DRM_I915_GEM_PREAD, i915_gem_pread_ioctl, 0), +	DRM_IOCTL_DEF(DRM_I915_GEM_PWRITE, i915_gem_pwrite_ioctl, 0), +	DRM_IOCTL_DEF(DRM_I915_GEM_MMAP, i915_gem_mmap_ioctl, 0), +	DRM_IOCTL_DEF(DRM_I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, 0),  };  int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls); diff --git a/shared-core/i915_drm.h b/shared-core/i915_drm.h index ce01640a..fe47708d 100644 --- a/shared-core/i915_drm.h +++ b/shared-core/i915_drm.h @@ -183,7 +183,12 @@ typedef struct drm_i915_sarea {  #define DRM_I915_GEM_BUSY	0x17  #define DRM_I915_GEM_THROTTLE	0x18  #define DRM_I915_GEM_ENTERVT	0x19 -#define DRM_I915_GEM_LEAVEVT	0x20 +#define DRM_I915_GEM_LEAVEVT	0x1a +#define DRM_I915_GEM_CREATE	0x1b +#define DRM_I915_GEM_PREAD	0x1c +#define DRM_I915_GEM_PWRITE	0x1d +#define DRM_I915_GEM_MMAP	0x1e +#define DRM_I915_GEM_SET_DOMAIN	0x1f  #define DRM_IOCTL_I915_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)  #define DRM_IOCTL_I915_FLUSH		DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) @@ -211,6 +216,11 @@ typedef struct drm_i915_sarea {  #define DRM_IOCTL_I915_GEM_THROTTLE	DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE)  #define DRM_IOCTL_I915_GEM_ENTERVT	DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT)  #define DRM_IOCTL_I915_GEM_LEAVEVT	DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT) +#define DRM_IOCTL_I915_GEM_CREATE	DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create) +#define DRM_IOCTL_I915_GEM_PREAD	DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread) +#define DRM_IOCTL_I915_GEM_PWRITE	DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite) +#define DRM_IOCTL_I915_GEM_MMAP		DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap) +#define DRM_IOCTL_I915_GEM_SET_DOMAIN	DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain)  /* Asynchronous page flipping:   */ @@ -424,6 +434,73 @@ struct drm_i915_gem_init {  	uint64_t gtt_end;  }; +struct drm_i915_gem_create { +	/** +	 * Requested size for the object. +	 * +	 * The (page-aligned) allocated size for the object will be returned. +	 */ +	uint64_t size; +	/** +	 * Returned handle for the object. +	 * +	 * Object handles are nonzero. +	 */ +	uint32_t handle; +	uint32_t pad; +}; + +struct drm_i915_gem_pread { +	/** Handle for the object being read. */ +	uint32_t handle; +	uint32_t pad; +	/** Offset into the object to read from */ +	uint64_t offset; +	/** Length of data to read */ +	uint64_t size; +	/** Pointer to write the data into. */ +	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */ +}; + +struct drm_i915_gem_pwrite { +	/** Handle for the object being written to. */ +	uint32_t handle; +	uint32_t pad; +	/** Offset into the object to write to */ +	uint64_t offset; +	/** Length of data to write */ +	uint64_t size; +	/** Pointer to read the data from. */ +	uint64_t data_ptr;	/* void *, but pointers are not 32/64 compatible */ +}; + +struct drm_i915_gem_mmap { +	/** Handle for the object being mapped. */ +	uint32_t handle; +	uint32_t pad; +	/** Offset in the object to map. */ +	uint64_t offset; +	/** +	 * Length of data to map. +	 * +	 * The value will be page-aligned. +	 */ +	uint64_t size; +	/** Returned pointer the data was mapped at */ +	uint64_t addr_ptr;	/* void *, but pointers are not 32/64 compatible */ +}; + +struct drm_i915_gem_set_domain { +	/** Handle for the object */ +	uint32_t handle; + +	/** New read domains */ +	uint32_t read_domains; + +	/** New write domain */ +	uint32_t write_domain; +}; +  struct drm_i915_gem_relocation_entry {  	/**  	 * Handle of the buffer being pointed to by this relocation entry. @@ -469,20 +546,26 @@ struct drm_i915_gem_relocation_entry {  	uint32_t write_domain;  }; -/** +/** @{   * Intel memory domains   *   * Most of these just align with the various caches in   * the system and are used to flush and invalidate as   * objects end up cached in different domains.   */ - -/* 0x00000001 is DRM_GEM_DOMAIN_CPU */ -#define DRM_GEM_DOMAIN_I915_RENDER	0x00000002	/* Render cache, used by 2D and 3D drawing */ -#define DRM_GEM_DOMAIN_I915_SAMPLER	0x00000004	/* Sampler cache, used by texture engine */ -#define DRM_GEM_DOMAIN_I915_COMMAND	0x00000008	/* Command queue, used to load batch buffers */ -#define DRM_GEM_DOMAIN_I915_INSTRUCTION	0x00000010	/* Instruction cache, used by shader programs */ -#define DRM_GEM_DOMAIN_I915_VERTEX	0x00000020	/* Vertex address cache */ +/** CPU cache */ +#define I915_GEM_DOMAIN_CPU		0x00000001 +/** Render cache, used by 2D and 3D drawing */ +#define I915_GEM_DOMAIN_RENDER		0x00000002 +/** Sampler cache, used by texture engine */ +#define I915_GEM_DOMAIN_SAMPLER		0x00000004 +/** Command queue, used to load batch buffers */ +#define I915_GEM_DOMAIN_COMMAND		0x00000008 +/** Instruction cache, used by shader programs */ +#define I915_GEM_DOMAIN_INSTRUCTION	0x00000010 +/** Vertex address cache */ +#define I915_GEM_DOMAIN_VERTEX		0x00000020 +/** @} */  struct drm_i915_gem_exec_object {  	/** diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h index 3a22ae3c..9c9925b5 100644 --- a/shared-core/i915_drv.h +++ b/shared-core/i915_drv.h @@ -37,7 +37,7 @@  #define DRIVER_NAME		"i915"  #define DRIVER_DESC		"Intel Graphics" -#define DRIVER_DATE		"20080312" +#define DRIVER_DATE		"20080611"  #if defined(__linux__)  #define I915_HAVE_FENCE @@ -61,7 +61,7 @@   */  #define DRIVER_MAJOR		1  #if defined(I915_HAVE_FENCE) && defined(I915_HAVE_BUFFER) -#define DRIVER_MINOR		13 +#define DRIVER_MINOR		14  #else  #define DRIVER_MINOR		6  #endif @@ -461,6 +461,16 @@ int i915_execbuffer(struct drm_device *dev, void *data,  /* i915_gem.c */  int i915_gem_init_ioctl(struct drm_device *dev, void *data,  			struct drm_file *file_priv); +int i915_gem_create_ioctl(struct drm_device *dev, void *data, +			  struct drm_file *file_priv); +int i915_gem_pread_ioctl(struct drm_device *dev, void *data, +			 struct drm_file *file_priv); +int i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, +			  struct drm_file *file_priv); +int i915_gem_mmap_ioctl(struct drm_device *dev, void *data, +			struct drm_file *file_priv); +int i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, +			      struct drm_file *file_priv);  int i915_gem_execbuffer(struct drm_device *dev, void *data,  			struct drm_file *file_priv);  int i915_gem_pin_ioctl(struct drm_device *dev, void *data, @@ -479,12 +489,6 @@ int i915_gem_init_object(struct drm_gem_object *obj);  void i915_gem_free_object(struct drm_gem_object *obj);  int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment);  void i915_gem_object_unpin(struct drm_gem_object *obj); -int i915_gem_set_domain(struct drm_gem_object *obj, -			struct drm_file *file_priv, -			uint32_t read_domains, -			uint32_t write_domain); -int i915_gem_flush_pwrite(struct drm_gem_object *obj, -			  uint64_t offset, uint64_t size);  void i915_gem_lastclose(struct drm_device *dev);  void i915_gem_retire_requests(struct drm_device *dev);  void i915_gem_retire_timeout(unsigned long data); | 
