The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/drm/i915_drm.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
    3  * All Rights Reserved.
    4  * 
    5  * Permission is hereby granted, free of charge, to any person obtaining a
    6  * copy of this software and associated documentation files (the
    7  * "Software"), to deal in the Software without restriction, including
    8  * without limitation the rights to use, copy, modify, merge, publish,
    9  * distribute, sub license, and/or sell copies of the Software, and to
   10  * permit persons to whom the Software is furnished to do so, subject to
   11  * the following conditions:
   12  * 
   13  * The above copyright notice and this permission notice (including the
   14  * next paragraph) shall be included in all copies or substantial portions
   15  * of the Software.
   16  * 
   17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
   20  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
   21  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   22  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   23  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   24  * 
   25  */
   26 
   27 #include <sys/cdefs.h>
   28 __FBSDID("$FreeBSD: releng/6.4/sys/dev/drm/i915_drm.h 166475 2007-02-03 20:01:54Z flz $");
   29 
   30 #ifndef _I915_DRM_H_
   31 #define _I915_DRM_H_
   32 
   33 /* Please note that modifications to all structs defined here are
   34  * subject to backwards-compatibility constraints.
   35  */
   36 
   37 #include "dev/drm/drm.h"
   38 
   39 /* Each region is a minimum of 16k, and there are at most 255 of them.
   40  */
   41 #define I915_NR_TEX_REGIONS 255 /* table size 2k - maximum due to use
   42                                  * of chars for next/prev indices */
   43 #define I915_LOG_MIN_TEX_REGION_SIZE 14
   44 
   45 typedef struct _drm_i915_init {
   46         enum {
   47                 I915_INIT_DMA = 0x01,
   48                 I915_CLEANUP_DMA = 0x02,
   49                 I915_RESUME_DMA = 0x03
   50         } func;
   51         unsigned int mmio_offset;
   52         int sarea_priv_offset;
   53         unsigned int ring_start;
   54         unsigned int ring_end;
   55         unsigned int ring_size;
   56         unsigned int front_offset;
   57         unsigned int back_offset;
   58         unsigned int depth_offset;
   59         unsigned int w;
   60         unsigned int h;
   61         unsigned int pitch;
   62         unsigned int pitch_bits;
   63         unsigned int back_pitch;
   64         unsigned int depth_pitch;
   65         unsigned int cpp;
   66         unsigned int chipset;
   67 } drm_i915_init_t;
   68 
   69 typedef struct _drm_i915_sarea {
   70         drm_tex_region_t texList[I915_NR_TEX_REGIONS + 1];
   71         int last_upload;        /* last time texture was uploaded */
   72         int last_enqueue;       /* last time a buffer was enqueued */
   73         int last_dispatch;      /* age of the most recently dispatched buffer */
   74         int ctxOwner;           /* last context to upload state */
   75         int texAge;
   76         int pf_enabled;         /* is pageflipping allowed? */
   77         int pf_active;
   78         int pf_current_page;    /* which buffer is being displayed? */
   79         int perf_boxes;         /* performance boxes to be displayed */
   80         int width, height;      /* screen size in pixels */
   81 
   82         drm_handle_t front_handle;
   83         int front_offset;
   84         int front_size;
   85 
   86         drm_handle_t back_handle;
   87         int back_offset;
   88         int back_size;
   89 
   90         drm_handle_t depth_handle;
   91         int depth_offset;
   92         int depth_size;
   93 
   94         drm_handle_t tex_handle;
   95         int tex_offset;
   96         int tex_size;
   97         int log_tex_granularity;
   98         int pitch;
   99         int rotation;           /* 0, 90, 180 or 270 */
  100         int rotated_offset;
  101         int rotated_size;
  102         int rotated_pitch;
  103         int virtualX, virtualY;
  104 
  105         unsigned int front_tiled;
  106         unsigned int back_tiled;
  107         unsigned int depth_tiled;
  108         unsigned int rotated_tiled;
  109         unsigned int rotated2_tiled;
  110 } drm_i915_sarea_t;
  111 
  112 /* Flags for perf_boxes
  113  */
  114 #define I915_BOX_RING_EMPTY    0x1
  115 #define I915_BOX_FLIP          0x2
  116 #define I915_BOX_WAIT          0x4
  117 #define I915_BOX_TEXTURE_LOAD  0x8
  118 #define I915_BOX_LOST_CONTEXT  0x10
  119 
  120 /* I915 specific ioctls
  121  * The device specific ioctl range is 0x40 to 0x79.
  122  */
  123 #define DRM_I915_INIT           0x00
  124 #define DRM_I915_FLUSH          0x01
  125 #define DRM_I915_FLIP           0x02
  126 #define DRM_I915_BATCHBUFFER    0x03
  127 #define DRM_I915_IRQ_EMIT       0x04
  128 #define DRM_I915_IRQ_WAIT       0x05
  129 #define DRM_I915_GETPARAM       0x06
  130 #define DRM_I915_SETPARAM       0x07
  131 #define DRM_I915_ALLOC          0x08
  132 #define DRM_I915_FREE           0x09
  133 #define DRM_I915_INIT_HEAP      0x0a
  134 #define DRM_I915_CMDBUFFER      0x0b
  135 #define DRM_I915_DESTROY_HEAP   0x0c
  136 #define DRM_I915_SET_VBLANK_PIPE        0x0d
  137 #define DRM_I915_GET_VBLANK_PIPE        0x0e
  138 
  139 #define DRM_IOCTL_I915_INIT             DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
  140 #define DRM_IOCTL_I915_FLUSH            DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
  141 #define DRM_IOCTL_I915_FLIP             DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLIP)
  142 #define DRM_IOCTL_I915_BATCHBUFFER      DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t)
  143 #define DRM_IOCTL_I915_IRQ_EMIT         DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t)
  144 #define DRM_IOCTL_I915_IRQ_WAIT         DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t)
  145 #define DRM_IOCTL_I915_GETPARAM         DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, drm_i915_getparam_t)
  146 #define DRM_IOCTL_I915_SETPARAM         DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SETPARAM, drm_i915_setparam_t)
  147 #define DRM_IOCTL_I915_ALLOC            DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_ALLOC, drm_i915_mem_alloc_t)
  148 #define DRM_IOCTL_I915_FREE             DRM_IOW( DRM_COMMAND_BASE + DRM_I915_FREE, drm_i915_mem_free_t)
  149 #define DRM_IOCTL_I915_INIT_HEAP        DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
  150 #define DRM_IOCTL_I915_CMDBUFFER        DRM_IOW( DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
  151 #define DRM_IOCTL_I915_DESTROY_HEAP     DRM_IOW( DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
  152 #define DRM_IOCTL_I915_SET_VBLANK_PIPE  DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
  153 #define DRM_IOCTL_I915_GET_VBLANK_PIPE  DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
  154 
  155 
  156 /* Allow drivers to submit batchbuffers directly to hardware, relying
  157  * on the security mechanisms provided by hardware.
  158  */
  159 typedef struct _drm_i915_batchbuffer {
  160         int start;              /* agp offset */
  161         int used;               /* nr bytes in use */
  162         int DR1;                /* hw flags for GFX_OP_DRAWRECT_INFO */
  163         int DR4;                /* window origin for GFX_OP_DRAWRECT_INFO */
  164         int num_cliprects;      /* mulitpass with multiple cliprects? */
  165         drm_clip_rect_t __user *cliprects;      /* pointer to userspace cliprects */
  166 } drm_i915_batchbuffer_t;
  167 
  168 /* As above, but pass a pointer to userspace buffer which can be
  169  * validated by the kernel prior to sending to hardware.
  170  */
  171 typedef struct _drm_i915_cmdbuffer {
  172         char __user *buf;       /* pointer to userspace command buffer */
  173         int sz;                 /* nr bytes in buf */
  174         int DR1;                /* hw flags for GFX_OP_DRAWRECT_INFO */
  175         int DR4;                /* window origin for GFX_OP_DRAWRECT_INFO */
  176         int num_cliprects;      /* mulitpass with multiple cliprects? */
  177         drm_clip_rect_t __user *cliprects;      /* pointer to userspace cliprects */
  178 } drm_i915_cmdbuffer_t;
  179 
  180 /* Userspace can request & wait on irq's:
  181  */
  182 typedef struct drm_i915_irq_emit {
  183         int __user *irq_seq;
  184 } drm_i915_irq_emit_t;
  185 
  186 typedef struct drm_i915_irq_wait {
  187         int irq_seq;
  188 } drm_i915_irq_wait_t;
  189 
  190 /* Ioctl to query kernel params:
  191  */
  192 #define I915_PARAM_IRQ_ACTIVE            1
  193 #define I915_PARAM_ALLOW_BATCHBUFFER     2
  194 #define I915_PARAM_LAST_DISPATCH         3
  195 
  196 typedef struct drm_i915_getparam {
  197         int param;
  198         int __user *value;
  199 } drm_i915_getparam_t;
  200 
  201 /* Ioctl to set kernel params:
  202  */
  203 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START            1
  204 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY             2
  205 #define I915_SETPARAM_ALLOW_BATCHBUFFER                   3
  206 
  207 typedef struct drm_i915_setparam {
  208         int param;
  209         int value;
  210 } drm_i915_setparam_t;
  211 
  212 /* A memory manager for regions of shared memory:
  213  */
  214 #define I915_MEM_REGION_AGP 1
  215 
  216 typedef struct drm_i915_mem_alloc {
  217         int region;
  218         int alignment;
  219         int size;
  220         int __user *region_offset;      /* offset from start of fb or agp */
  221 } drm_i915_mem_alloc_t;
  222 
  223 typedef struct drm_i915_mem_free {
  224         int region;
  225         int region_offset;
  226 } drm_i915_mem_free_t;
  227 
  228 typedef struct drm_i915_mem_init_heap {
  229         int region;
  230         int size;
  231         int start;
  232 } drm_i915_mem_init_heap_t;
  233 
  234 /* Allow memory manager to be torn down and re-initialized (eg on
  235  * rotate):
  236  */
  237 typedef struct drm_i915_mem_destroy_heap {
  238                 int region;
  239 } drm_i915_mem_destroy_heap_t;
  240 
  241 /* Allow X server to configure which pipes to monitor for vblank signals
  242  */
  243 #define DRM_I915_VBLANK_PIPE_A  1
  244 #define DRM_I915_VBLANK_PIPE_B  2
  245 
  246 typedef struct drm_i915_vblank_pipe {
  247         int pipe;
  248 } drm_i915_vblank_pipe_t;
  249 
  250 #endif                          /* _I915_DRM_H_ */

Cache object: d9ef3fbad9ff4121214193e552e6c10c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.