From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: CUDA port for intel graphics Date: Wed, 23 Jun 2010 09:40:41 +0100 Message-ID: <89khjo$fosqgf@orsmga002.jf.intel.com> References: <4C21B45F.8040204@mail.gatech.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id B8E2A9E75B for ; Wed, 23 Jun 2010 01:40:44 -0700 (PDT) In-Reply-To: <4C21B45F.8040204@mail.gatech.edu> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Gregory Diamos , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Hi Gregory, I think most of your questions can be answered by reading the [interface] design document for GEM - the Graphics Execution Manager. http://lwn.net/Articles/283798/ That will give you a better idea of the separation of the execution and memory management which is performed by the kernel and how it is controlled by userspace. All userspace clients are [more or less] equal and submit batch buffers to the kernel to be scheduled for execution. Each batch is a list of buffers [your textures, command streams, vertex buffers etc] which the kernel then maps into the graphics aperture and performs relocations upon the command streams. As such the GPU is then shared between multiple independent clients. If you want to perform a privileged operation such as modifying the ring buffer or registers prior to the execution of your batch, you will need to extend the GEM interface to allow you to do so. Hope this helps, and you have a lot of fun programming with the GPU directly. -- Chris Wilson, Intel Open Source Technology Centre