public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Randy Dunlap <randy.dunlap@oracle.com>
To: Eric Anholt <eric@anholt.net>
Cc: linux-kernel@vger.kernel.org, keithp@keithp.com
Subject: Re: [PATCH] drm: Add GEM ("graphics execution manager") to i915 driver.
Date: Fri, 1 Aug 2008 08:44:05 -0700	[thread overview]
Message-ID: <20080801084405.62d3c823.randy.dunlap@oracle.com> (raw)
In-Reply-To: <1217573919-7496-3-git-send-email-eric@anholt.net>

On Thu, 31 Jul 2008 23:58:39 -0700 Eric Anholt wrote:

> GEM allows the creation of persistent buffer objects accessible by the
> graphics device through new ioctls for managing execution of commands on the
> device.  The userland API is almost entirely driver-specific to ensure that
> any driver building on this model can easily map the interface to individual
> driver requirements.
> 
> GEM is used by the 2d driver for managing its internal state allocations and
> will be used for pixmap storage to reduce memory consumption and enable
> zero-copy GLX_EXT_texture_from_pixmap, and in the 3d driver is used to enable
> GL_EXT_framebuffer_object and GL_ARB_pixel_buffer_object.

"the 2d driver" ... "the 3d driver".
Just curious:  Is there only one of each of these?


> diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c
> index aefa5ac..2639be2 100644
> --- a/drivers/gpu/drm/drm_agpsupport.c
> +++ b/drivers/gpu/drm/drm_agpsupport.c
> @@ -33,6 +33,7 @@
>  
>  #include "drmP.h"
>  #include <linux/module.h>
> +#include <asm/agp.h>
>  
>  #if __OS_HAS_AGP
>  
> @@ -452,4 +453,52 @@ int drm_agp_unbind_memory(DRM_AGP_MEM * handle)
>  	return agp_unbind_memory(handle);
>  }
>  
> -#endif				/* __OS_HAS_AGP */
> +/**

In the kernel source tree, "/**" means "beginning of kernel-doc notation",
so please don't use it when kernel-doc isn't being used.
(in multiple places/files)


> + * Binds a collection of pages into AGP memory at the given offset, returning
> + * the AGP memory structure containing them.
> + *
> + * No reference is held on the pages during this time -- it is up to the
> + * caller to handle that.
> + */
> +DRM_AGP_MEM *
> +drm_agp_bind_pages(struct drm_device *dev,
> +		   struct page **pages,
> +		   unsigned long num_pages,
> +		   uint32_t gtt_offset)

and the preferred function format is more like:

DRM_AGP_MEM *drm_agp_bind_page(struct drm_device *dev,
...
(many places)


> +{
> +	DRM_AGP_MEM *mem;
> +	int ret, i;
> +
> +	DRM_DEBUG("\n");
> +
> +	mem = drm_agp_allocate_memory(dev->agp->bridge, num_pages,
> +				      AGP_USER_MEMORY);
> +	if (mem == NULL) {
> +		DRM_ERROR("Failed to allocate memory for %ld pages\n",
> +			  num_pages);
> +		return NULL;
> +	}
> +
> +	for (i = 0; i < num_pages; i++)
> +		mem->memory[i] = phys_to_gart(page_to_phys(pages[i]));
> +	mem->page_count = num_pages;
> +
> +	mem->is_flushed = true;
> +	ret = drm_agp_bind_memory(mem, gtt_offset / PAGE_SIZE);
> +	if (ret != 0) {
> +		DRM_ERROR("Failed to bind AGP memory: %d\n", ret);
> +		agp_free_memory(mem);
> +		return NULL;
> +	}
> +
> +	return mem;
> +}
> +EXPORT_SYMBOL(drm_agp_bind_pages);





> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index 1c1b13e..a540db8 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -104,6 +104,7 @@ struct drm_device;
>  #define DRIVER_DMA_QUEUE   0x200
>  #define DRIVER_FB_DMA      0x400
>  #define DRIVER_IRQ_VBL2    0x800
> +#define DRIVER_GEM         0x1000
>  
>  /***********************************************************************/
>  /** \name Begin the DRM... */

What uses/processes this comment notation, please?


> @@ -771,6 +838,22 @@ struct drm_device {
>  	spinlock_t drw_lock;
>  	struct idr drw_idr;
>  	/*@} */
> +
> +	/** \name GEM information */
> +	/*@{ */

and this one?

> +	spinlock_t object_name_lock;
> +	struct idr object_name_idr;
> +	atomic_t object_count;
> +	atomic_t object_memory;
> +	atomic_t pin_count;
> +	atomic_t pin_memory;
> +	atomic_t gtt_count;
> +	atomic_t gtt_memory;
> +	uint32_t gtt_total;
> +	uint32_t invalidate_domains;    /* domains pending invalidation */
> +	uint32_t flush_domains;         /* domains pending flush */
> +	/*@} */
> +
>  };


---
~Randy
Linux Plumbers Conference, 17-19 September 2008, Portland, Oregon USA
http://linuxplumbersconf.org/

  reply	other threads:[~2008-08-01 15:49 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-01  6:58 [PATCH] PCI: Add pci_read_base() API Eric Anholt
2008-08-01  6:58 ` [PATCH] Export shmem_file_setup and shmem_getpage for DRM-GEM Eric Anholt
2008-08-01  6:58   ` [PATCH] drm: Add GEM ("graphics execution manager") to i915 driver Eric Anholt
2008-08-01 15:44     ` Randy Dunlap [this message]
2008-08-01 18:11       ` Keith Packard
2008-08-06  1:11       ` Eric Anholt
2008-08-01  7:10   ` [PATCH] Export shmem_file_setup and shmem_getpage for DRM-GEM Eric Anholt
2008-08-01 10:57   ` Hugh Dickins
2008-08-01 18:06     ` Keith Packard
2008-08-01 20:50   ` Christoph Hellwig
2008-08-01 23:01     ` Keith Packard
2008-08-03 12:49       ` John Stoffel
2008-08-03 17:52         ` Keith Packard
2008-08-03 23:35           ` files/process scaling problem? (was: [PATCH] Export shmem_file_setup and shmem_getpage for DRM-GEM) Ingo Oeser
2008-08-04  0:19             ` Keith Packard
2008-08-04  8:19               ` Alan Cox
2008-08-04 13:51                 ` Arjan van de Ven
2008-08-04 14:11                   ` Alan Cox
2008-08-04 16:38                     ` Arjan van de Ven
2008-08-04 16:58                     ` Keith Packard
2008-08-04 21:46                       ` Ingo Oeser
2008-08-04 22:20                         ` Dave Airlie
2008-08-05  0:34                         ` Keith Packard
2008-08-11  1:23       ` [PATCH] Export shmem_file_setup and shmem_getpage for DRM-GEM Christoph Hellwig
2008-08-11  3:03         ` [PATCH] Export shmem_file_setup " Keith Packard
2008-08-04  1:54     ` [PATCH] Export shmem_file_setup and shmem_getpage " Keith Packard
2008-08-04  9:02       ` Nick Piggin
2008-08-04 10:26         ` Keith Packard
2008-08-04 10:43           ` Nick Piggin
2008-08-04 11:45             ` Keith Packard
2008-08-04 17:09               ` Hugh Dickins
2008-08-04 17:25                 ` Keith Packard
2008-08-04 18:39                   ` Hugh Dickins
2008-08-04 19:20                     ` Keith Packard
2008-08-04 19:55                       ` Hugh Dickins
2008-08-04 21:37                         ` Keith Packard
2008-08-05  2:25                         ` John Stoffel
2008-08-05  4:28                           ` Keith Packard
2008-08-06 16:20                             ` Stephane Marchesin
2008-08-06 17:24                               ` Arjan van de Ven
2008-08-06 17:32                                 ` Stephane Marchesin
2008-08-06 17:56                                   ` Keith Packard
2008-08-06 18:09                                     ` Stephane Marchesin
2008-08-06 21:22                                       ` Keith Packard
2008-08-07  2:16                                 ` Stephane Marchesin
2008-08-07  2:57                                   ` Keith Packard
2008-08-11  1:34                                 ` Christoph Hellwig
2008-08-05  4:28                 ` Nick Piggin
2008-08-11  1:30                 ` Christoph Hellwig
2008-08-04 21:58         ` Keith Packard
2008-08-04 22:22           ` Dave Airlie
2008-08-05  4:43           ` Nick Piggin
2008-08-05  5:19             ` Keith Packard
2008-08-07  0:45             ` Jesse Barnes
2008-08-19  1:17             ` Dave Airlie
2008-08-19 10:00               ` Nick Piggin
2008-08-19 16:46                 ` Keith Packard
2008-08-19 18:50                   ` Jesse Barnes
2008-08-21 13:42                     ` Jerome Glisse
2008-08-21 16:15                       ` Jesse Barnes
  -- strict thread matches above, loose matches on Subject: below --
2008-08-26 19:43 [resubmit] Add GEM to i915 DRM driver Eric Anholt
2008-08-26 19:43 ` [PATCH] Export shmem_file_setup for DRM-GEM Eric Anholt
2008-08-26 19:43   ` [PATCH] Export kmap_atomic_pfn " Eric Anholt
2008-08-26 19:43     ` [PATCH] drm: Add GEM ("graphics execution manager") to i915 driver Eric Anholt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080801084405.62d3c823.randy.dunlap@oracle.com \
    --to=randy.dunlap@oracle.com \
    --cc=eric@anholt.net \
    --cc=keithp@keithp.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox