XORG_NV/sun-src/xc/extras/Mesa/src/mesa/drivers/dri/i915/intel_context.h
changeset 75 64e817c4a743
equal deleted inserted replaced
74:42c181d8d7ed 75:64e817c4a743
       
     1 /**************************************************************************
       
     2  * 
       
     3  * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
       
     4  * All Rights Reserved.
       
     5  * 
       
     6  * Permission is hereby granted, free of charge, to any person obtaining a
       
     7  * copy of this software and associated documentation files (the
       
     8  * "Software"), to deal in the Software without restriction, including
       
     9  * without limitation the rights to use, copy, modify, merge, publish,
       
    10  * distribute, sub license, and/or sell copies of the Software, and to
       
    11  * permit persons to whom the Software is furnished to do so, subject to
       
    12  * the following conditions:
       
    13  * 
       
    14  * The above copyright notice and this permission notice (including the
       
    15  * next paragraph) shall be included in all copies or substantial portions
       
    16  * of the Software.
       
    17  * 
       
    18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
    19  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
    20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
       
    21  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
       
    22  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       
    23  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       
    24  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
    25  * 
       
    26  **************************************************************************/
       
    27 
       
    28 #ifndef INTELCONTEXT_INC
       
    29 #define INTELCONTEXT_INC
       
    30 
       
    31 
       
    32 
       
    33 #include "mtypes.h"
       
    34 #include "drm.h"
       
    35 #include "mm.h"
       
    36 #include "texmem.h"
       
    37 
       
    38 #include "intel_screen.h"
       
    39 #include "i830_common.h"
       
    40 #include "tnl/t_vertex.h"
       
    41 
       
    42 #define TAG(x) intel##x
       
    43 #include "tnl_dd/t_dd_vertex.h"
       
    44 #undef TAG
       
    45 
       
    46 #if defined(sun)
       
    47 extern void _sigoff(void);
       
    48 extern void _sigon(void);
       
    49 #endif
       
    50 
       
    51 #define DV_PF_555  (1<<8)
       
    52 #define DV_PF_565  (2<<8)
       
    53 #define DV_PF_8888 (3<<8)
       
    54 
       
    55 #define INTEL_CONTEXT(ctx)	((intelContextPtr)(ctx))
       
    56 
       
    57 typedef struct intel_context intelContext;
       
    58 typedef struct intel_context *intelContextPtr;
       
    59 typedef struct intel_texture_object *intelTextureObjectPtr;
       
    60 
       
    61 typedef void (*intel_tri_func)(intelContextPtr, intelVertex *, intelVertex *,
       
    62 							  intelVertex *);
       
    63 typedef void (*intel_line_func)(intelContextPtr, intelVertex *, intelVertex *);
       
    64 typedef void (*intel_point_func)(intelContextPtr, intelVertex *);
       
    65 
       
    66 #define INTEL_FALLBACK_DRAW_BUFFER	 0x1
       
    67 #define INTEL_FALLBACK_READ_BUFFER	 0x2
       
    68 #define INTEL_FALLBACK_USER		 0x4
       
    69 #define INTEL_FALLBACK_NO_BATCHBUFFER	 0x8
       
    70 #define INTEL_FALLBACK_NO_TEXMEM	 0x10
       
    71 #define INTEL_FALLBACK_RENDERMODE	 0x20
       
    72 
       
    73 extern void intelFallback( intelContextPtr intel, GLuint bit, GLboolean mode );
       
    74 #define FALLBACK( intel, bit, mode ) intelFallback( intel, bit, mode )
       
    75 
       
    76 
       
    77 #define INTEL_TEX_MAXLEVELS 10
       
    78 
       
    79 
       
    80 struct intel_texture_object
       
    81 {
       
    82    driTextureObject    base;	/* the parent class */
       
    83 
       
    84    GLuint texelBytes;
       
    85    GLuint age;
       
    86    GLuint Pitch;
       
    87    GLuint Height;
       
    88    GLuint TextureOffset;
       
    89    GLubyte *BufAddr;   
       
    90 
       
    91    GLuint min_level;
       
    92    GLuint max_level;
       
    93    GLuint depth_pitch;
       
    94 
       
    95    struct {
       
    96       const struct gl_texture_image *image;
       
    97       GLuint offset;       /* into BufAddr */
       
    98       GLuint height;
       
    99       GLuint internalFormat;
       
   100    } image[6][INTEL_TEX_MAXLEVELS];
       
   101 
       
   102    GLuint dirty;
       
   103    GLuint firstLevel,lastLevel;
       
   104 };
       
   105 
       
   106 
       
   107 struct intel_context
       
   108 {
       
   109    GLcontext ctx;		/* the parent class */
       
   110 
       
   111    struct {
       
   112       void (*destroy)( intelContextPtr intel ); 
       
   113       void (*emit_state)( intelContextPtr intel );
       
   114       void (*emit_invarient_state)( intelContextPtr intel );
       
   115       void (*lost_hardware)( intelContextPtr intel );
       
   116       void (*update_texture_state)( intelContextPtr intel );
       
   117 
       
   118       void (*render_start)( intelContextPtr intel );
       
   119       void (*set_draw_offset)( intelContextPtr intel, int offset );
       
   120       void (*emit_flush)( intelContextPtr intel );
       
   121 
       
   122       void (*reduced_primitive_state)( intelContextPtr intel, GLenum rprim );
       
   123 
       
   124       GLboolean (*check_vertex_size)( intelContextPtr intel, GLuint expected );
       
   125 
       
   126       void (*clear_with_tris)( intelContextPtr intel, GLbitfield mask,
       
   127 			       GLboolean all, 
       
   128 			       GLint cx, GLint cy, GLint cw, GLint ch);
       
   129 
       
   130       intelTextureObjectPtr (*alloc_tex_obj)( struct gl_texture_object *tObj );
       
   131 
       
   132    } vtbl;
       
   133 
       
   134    GLint refcount;   
       
   135    GLuint Fallback;
       
   136    GLuint NewGLState;
       
   137    
       
   138    struct {
       
   139       GLuint start_offset;
       
   140       GLint size;
       
   141       GLint space;
       
   142       GLubyte *ptr;
       
   143    } batch;
       
   144       
       
   145    struct {
       
   146       void *ptr;
       
   147       GLint size;
       
   148       GLuint offset;
       
   149       GLuint active_buf;
       
   150       GLuint irq_emitted;
       
   151    } alloc;
       
   152 
       
   153    struct {
       
   154       GLuint primitive;
       
   155       GLubyte *start_ptr;      
       
   156       void (*flush)( GLcontext * );
       
   157    } prim;
       
   158 
       
   159    GLboolean locked;
       
   160 
       
   161    GLubyte clear_red;
       
   162    GLubyte clear_green;
       
   163    GLubyte clear_blue;
       
   164    GLubyte clear_alpha;
       
   165    GLuint ClearColor;
       
   166    GLuint ClearDepth;
       
   167 
       
   168    GLuint coloroffset;
       
   169    GLuint specoffset;
       
   170 
       
   171    /* Support for duplicating XYZW as WPOS parameter (crutch for I915).
       
   172     */
       
   173    GLuint wpos_offset;
       
   174    GLuint wpos_size;
       
   175 
       
   176    struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX];
       
   177    GLuint vertex_attr_count;
       
   178 
       
   179    GLfloat depth_scale;
       
   180    GLfloat polygon_offset_scale; /* dependent on depth_scale, bpp */
       
   181    GLuint depth_clear_mask;
       
   182    GLuint stencil_clear_mask;
       
   183 
       
   184    GLboolean hw_stencil;
       
   185    GLboolean hw_stipple;
       
   186    
       
   187    /* Texture object bookkeeping
       
   188     */
       
   189    GLuint                nr_heaps;
       
   190    driTexHeap          * texture_heaps[1];
       
   191    driTextureObject      swapped;
       
   192    GLuint                lastStamp;
       
   193 
       
   194    struct intel_texture_object *CurrentTexObj[MAX_TEXTURE_UNITS];
       
   195 
       
   196    /* State for intelvb.c and inteltris.c.
       
   197     */
       
   198    GLuint RenderIndex;
       
   199    GLmatrix ViewportMatrix;
       
   200    GLenum render_primitive;
       
   201    GLenum reduced_primitive;
       
   202    GLuint vertex_size;
       
   203    char *verts;			/* points to tnl->clipspace.vertex_buf */
       
   204 
       
   205 
       
   206    /* Fallback rasterization functions 
       
   207     */
       
   208    intel_point_func draw_point;
       
   209    intel_line_func draw_line;
       
   210    intel_tri_func draw_tri;
       
   211 
       
   212    /* These refer to the current draw (front vs. back) buffer:
       
   213     */
       
   214    char *drawMap;		/* draw buffer address in virtual mem */
       
   215    char *readMap;	
       
   216    GLuint drawOffset;		/* agp offset of drawbuffer */
       
   217    int drawX;			/* origin of drawable in draw buffer */
       
   218    int drawY;
       
   219    GLuint numClipRects;		/* cliprects for that buffer */
       
   220    drm_clip_rect_t *pClipRects;
       
   221 
       
   222    int dirtyAge;
       
   223    int perf_boxes;
       
   224    int do_irqs;
       
   225 
       
   226    GLboolean scissor;
       
   227    drm_clip_rect_t draw_rect;
       
   228    drm_clip_rect_t scissor_rect;
       
   229 
       
   230    drm_context_t hHWContext;
       
   231    drmLock *driHwLock;
       
   232    int driFd;
       
   233 
       
   234    __DRIdrawablePrivate *driDrawable;
       
   235    __DRIscreenPrivate *driScreen;
       
   236    intelScreenPrivate *intelScreen; 
       
   237    drmI830Sarea *sarea; 
       
   238 
       
   239    /**
       
   240     * Configuration cache
       
   241     */
       
   242    driOptionCache optionCache;
       
   243 };
       
   244 
       
   245 
       
   246 #define DEBUG_LOCKING	1
       
   247 
       
   248 #if DEBUG_LOCKING
       
   249 extern char *prevLockFile;
       
   250 extern int prevLockLine;
       
   251 
       
   252 #define DEBUG_LOCK()							\
       
   253    do {									\
       
   254       prevLockFile = (__FILE__);					\
       
   255       prevLockLine = (__LINE__);					\
       
   256    } while (0)
       
   257 
       
   258 #define DEBUG_RESET()							\
       
   259    do {									\
       
   260       prevLockFile = 0;							\
       
   261       prevLockLine = 0;							\
       
   262    } while (0)
       
   263 
       
   264 /* Slightly less broken way of detecting recursive locking in a
       
   265  * threaded environment.  The right way to do this would be to make
       
   266  * prevLockFile, prevLockLine thread-local.
       
   267  *
       
   268  * This technique instead checks to see if the same context is
       
   269  * requesting the lock twice -- this will not catch application
       
   270  * breakages where the same context is active in two different threads
       
   271  * at once, but it will catch driver breakages (recursive locking) in
       
   272  * threaded apps.
       
   273  */
       
   274 #define DEBUG_CHECK_LOCK()						\
       
   275    do {									\
       
   276       if ( *((volatile int *)intel->driHwLock) == 			\
       
   277 	   (DRM_LOCK_HELD | intel->hHWContext) ) {			\
       
   278 	 fprintf( stderr,						\
       
   279 		  "LOCK SET!\n\tPrevious %s:%d\n\tCurrent: %s:%d\n",	\
       
   280 		  prevLockFile, prevLockLine, __FILE__, __LINE__ );	\
       
   281 	 abort();							\
       
   282       }									\
       
   283    } while (0)
       
   284 
       
   285 #else
       
   286 
       
   287 #define DEBUG_LOCK()
       
   288 #define DEBUG_RESET()
       
   289 #define DEBUG_CHECK_LOCK()
       
   290 
       
   291 #endif
       
   292 
       
   293 
       
   294 
       
   295 
       
   296 /* Lock the hardware and validate our state.  
       
   297  */
       
   298 #if defined(sun)
       
   299 #define LOCK_HARDWARE( intel )				\
       
   300 do {							\
       
   301     char __ret=0;					\
       
   302     DEBUG_CHECK_LOCK();					\
       
   303     assert(!(intel)->locked);				\
       
   304     _sigoff();                                          \
       
   305     DRM_CAS((intel)->driHwLock, (intel)->hHWContext,	\
       
   306         (DRM_LOCK_HELD|(intel)->hHWContext), __ret);	\
       
   307     if (__ret)						\
       
   308         intelGetLock( (intel), 0 );			\
       
   309       DEBUG_LOCK();					\
       
   310     (intel)->locked = 1;				\
       
   311 }while (0)
       
   312 
       
   313 #else
       
   314 
       
   315 #define LOCK_HARDWARE( intel )				\
       
   316 do {							\
       
   317     char __ret=0;					\
       
   318     DEBUG_CHECK_LOCK();					\
       
   319     assert(!(intel)->locked);				\
       
   320     DRM_CAS((intel)->driHwLock, (intel)->hHWContext,	\
       
   321         (DRM_LOCK_HELD|(intel)->hHWContext), __ret);	\
       
   322     if (__ret)						\
       
   323         intelGetLock( (intel), 0 );			\
       
   324       DEBUG_LOCK();					\
       
   325     (intel)->locked = 1;				\
       
   326 }while (0)
       
   327 
       
   328 #endif
       
   329  
       
   330   
       
   331   /* Unlock the hardware using the global current context 
       
   332    */
       
   333 #if defined(sun)
       
   334 #define UNLOCK_HARDWARE(intel)						\
       
   335 do {									\
       
   336    intel->locked = 0;							\
       
   337    if (0) { 								\
       
   338       intel->perf_boxes |= intel->sarea->perf_boxes;  			\
       
   339       intel->sarea->perf_boxes = 0;					\
       
   340    }									\
       
   341    DRM_UNLOCK((intel)->driFd, (intel)->driHwLock, (intel)->hHWContext);	\
       
   342    DEBUG_RESET();							\
       
   343    _sigon();                                                            \
       
   344 } while (0)
       
   345 
       
   346 #else
       
   347 
       
   348 #define UNLOCK_HARDWARE(intel)						\
       
   349 do {									\
       
   350    intel->locked = 0;							\
       
   351    if (0) { 								\
       
   352       intel->perf_boxes |= intel->sarea->perf_boxes;  			\
       
   353       intel->sarea->perf_boxes = 0;					\
       
   354    }									\
       
   355    DRM_UNLOCK((intel)->driFd, (intel)->driHwLock, (intel)->hHWContext);	\
       
   356    DEBUG_RESET();							\
       
   357 } while (0)
       
   358 
       
   359 #endif
       
   360 
       
   361 
       
   362 #define SUBPIXEL_X 0.125
       
   363 #define SUBPIXEL_Y 0.125
       
   364 
       
   365 #define INTEL_FIREVERTICES(intel)		\
       
   366 do {						\
       
   367    if ((intel)->prim.flush)			\
       
   368       (intel)->prim.flush(&(intel)->ctx);		\
       
   369 } while (0)
       
   370 
       
   371 /* ================================================================
       
   372  * Color packing:
       
   373  */
       
   374 
       
   375 #define INTEL_PACKCOLOR4444(r,g,b,a) \
       
   376   ((((a) & 0xf0) << 8) | (((r) & 0xf0) << 4) | ((g) & 0xf0) | ((b) >> 4))
       
   377 
       
   378 #define INTEL_PACKCOLOR1555(r,g,b,a) \
       
   379   ((((r) & 0xf8) << 7) | (((g) & 0xf8) << 2) | (((b) & 0xf8) >> 3) | \
       
   380     ((a) ? 0x8000 : 0))
       
   381 
       
   382 #define INTEL_PACKCOLOR565(r,g,b) \
       
   383   ((((r) & 0xf8) << 8) | (((g) & 0xfc) << 3) | (((b) & 0xf8) >> 3))
       
   384 
       
   385 #define INTEL_PACKCOLOR8888(r,g,b,a) \
       
   386   ((a<<24) | (r<<16) | (g<<8) | b)
       
   387 
       
   388 
       
   389 #define INTEL_PACKCOLOR(format, r,  g,  b, a)		\
       
   390 (format == DV_PF_555 ? INTEL_PACKCOLOR1555(r,g,b,a) :	\
       
   391  (format == DV_PF_565 ? INTEL_PACKCOLOR565(r,g,b) :	\
       
   392   (format == DV_PF_8888 ? INTEL_PACKCOLOR8888(r,g,b,a) :	\
       
   393    0)))
       
   394 
       
   395 
       
   396 
       
   397 /* ================================================================
       
   398  * From linux kernel i386 header files, copes with odd sizes better
       
   399  * than COPY_DWORDS would:
       
   400  */
       
   401 #if (defined(i386) || defined(__i386__)) && !(defined(__SOLARIS__) || defined(sun))
       
   402 static __inline__ void * __memcpy(void * to, const void * from, size_t n)
       
   403 {
       
   404    int d0, d1, d2;
       
   405    __asm__ __volatile__(
       
   406       "rep ; movsl\n\t"
       
   407       "testb $2,%b4\n\t"
       
   408       "je 1f\n\t"
       
   409       "movsw\n"
       
   410       "1:\ttestb $1,%b4\n\t"
       
   411       "je 2f\n\t"
       
   412       "movsb\n"
       
   413       "2:"
       
   414       : "=&c" (d0), "=&D" (d1), "=&S" (d2)
       
   415       :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
       
   416       : "memory");
       
   417    return (to);
       
   418 }
       
   419 #else
       
   420 #define __memcpy(a,b,c) memcpy(a,b,c)
       
   421 #endif
       
   422 
       
   423 
       
   424 
       
   425 /* ================================================================
       
   426  * Debugging:
       
   427  */
       
   428 #define DO_DEBUG		1
       
   429 #if DO_DEBUG
       
   430 extern int INTEL_DEBUG;
       
   431 #else
       
   432 #define INTEL_DEBUG		0
       
   433 #endif
       
   434 
       
   435 #define DEBUG_TEXTURE	0x1
       
   436 #define DEBUG_STATE	0x2
       
   437 #define DEBUG_IOCTL	0x4
       
   438 #define DEBUG_PRIMS	0x8
       
   439 #define DEBUG_VERTS	0x10
       
   440 #define DEBUG_FALLBACKS	0x20
       
   441 #define DEBUG_VERBOSE	0x40
       
   442 #define DEBUG_DRI       0x80
       
   443 #define DEBUG_DMA       0x100
       
   444 #define DEBUG_SANITY    0x200
       
   445 #define DEBUG_SYNC      0x400
       
   446 #define DEBUG_SLEEP     0x800
       
   447 #define DEBUG_PIXEL     0x1000
       
   448 
       
   449 
       
   450 #define PCI_CHIP_845_G			0x2562
       
   451 #define PCI_CHIP_I830_M			0x3577
       
   452 #define PCI_CHIP_I855_GM		0x3582
       
   453 #define PCI_CHIP_I865_G			0x2572
       
   454 #define PCI_CHIP_I915_G			0x2582
       
   455 #define PCI_CHIP_I915_GM		0x2592
       
   456 #define PCI_CHIP_I945_G			0x2772
       
   457 
       
   458 
       
   459 /* ================================================================
       
   460  * intel_context.c:
       
   461  */
       
   462 
       
   463 extern void intelInitDriverFunctions( struct dd_function_table *functions );
       
   464 
       
   465 extern GLboolean intelInitContext( intelContextPtr intel, 
       
   466 				   const __GLcontextModes *mesaVis,
       
   467 				   __DRIcontextPrivate *driContextPriv,
       
   468 				   void *sharedContextPrivate,
       
   469 				   struct dd_function_table *functions );
       
   470 
       
   471 extern void intelGetLock(intelContextPtr intel, GLuint flags);
       
   472 extern void intelSetBackClipRects(intelContextPtr intel);
       
   473 extern void intelSetFrontClipRects(intelContextPtr intel);
       
   474 extern void intelWindowMoved( intelContextPtr intel );
       
   475 
       
   476 extern void intelInitState( GLcontext *ctx );
       
   477 extern const GLubyte *intelGetString( GLcontext *ctx, GLenum name );
       
   478 
       
   479 
       
   480 /* ================================================================
       
   481  * intel_state.c:
       
   482  */
       
   483 extern void intelInitStateFuncs( struct dd_function_table *functions );
       
   484 
       
   485 #define COMPAREFUNC_ALWAYS		0
       
   486 #define COMPAREFUNC_NEVER		0x1
       
   487 #define COMPAREFUNC_LESS		0x2
       
   488 #define COMPAREFUNC_EQUAL		0x3
       
   489 #define COMPAREFUNC_LEQUAL		0x4
       
   490 #define COMPAREFUNC_GREATER		0x5
       
   491 #define COMPAREFUNC_NOTEQUAL		0x6
       
   492 #define COMPAREFUNC_GEQUAL		0x7
       
   493 
       
   494 #define STENCILOP_KEEP			0
       
   495 #define STENCILOP_ZERO			0x1
       
   496 #define STENCILOP_REPLACE		0x2
       
   497 #define STENCILOP_INCRSAT		0x3
       
   498 #define STENCILOP_DECRSAT		0x4
       
   499 #define STENCILOP_INCR			0x5
       
   500 #define STENCILOP_DECR			0x6
       
   501 #define STENCILOP_INVERT		0x7
       
   502 
       
   503 #define LOGICOP_CLEAR			0
       
   504 #define LOGICOP_NOR			0x1
       
   505 #define LOGICOP_AND_INV 		0x2
       
   506 #define LOGICOP_COPY_INV		0x3
       
   507 #define LOGICOP_AND_RVRSE		0x4
       
   508 #define LOGICOP_INV			0x5
       
   509 #define LOGICOP_XOR			0x6
       
   510 #define LOGICOP_NAND			0x7
       
   511 #define LOGICOP_AND			0x8
       
   512 #define LOGICOP_EQUIV			0x9
       
   513 #define LOGICOP_NOOP			0xa
       
   514 #define LOGICOP_OR_INV			0xb
       
   515 #define LOGICOP_COPY			0xc
       
   516 #define LOGICOP_OR_RVRSE		0xd
       
   517 #define LOGICOP_OR			0xe
       
   518 #define LOGICOP_SET			0xf
       
   519 
       
   520 #define BLENDFACT_ZERO			0x01
       
   521 #define BLENDFACT_ONE			0x02
       
   522 #define BLENDFACT_SRC_COLR		0x03
       
   523 #define BLENDFACT_INV_SRC_COLR 		0x04
       
   524 #define BLENDFACT_SRC_ALPHA		0x05
       
   525 #define BLENDFACT_INV_SRC_ALPHA 	0x06
       
   526 #define BLENDFACT_DST_ALPHA		0x07
       
   527 #define BLENDFACT_INV_DST_ALPHA 	0x08
       
   528 #define BLENDFACT_DST_COLR		0x09
       
   529 #define BLENDFACT_INV_DST_COLR		0x0a
       
   530 #define BLENDFACT_SRC_ALPHA_SATURATE	0x0b
       
   531 #define BLENDFACT_CONST_COLOR		0x0c
       
   532 #define BLENDFACT_INV_CONST_COLOR	0x0d
       
   533 #define BLENDFACT_CONST_ALPHA		0x0e
       
   534 #define BLENDFACT_INV_CONST_ALPHA	0x0f
       
   535 #define BLENDFACT_MASK          	0x0f
       
   536 
       
   537 
       
   538 extern int intel_translate_compare_func( GLenum func );
       
   539 extern int intel_translate_stencil_op( GLenum op );
       
   540 extern int intel_translate_blend_factor( GLenum factor );
       
   541 extern int intel_translate_logic_op( GLenum opcode );
       
   542 
       
   543 
       
   544 /* ================================================================
       
   545  * intel_ioctl.c:
       
   546  */
       
   547 extern void intel_dump_batchbuffer( long offset,
       
   548 				    int *ptr,
       
   549 				    int count );
       
   550 
       
   551 
       
   552 /* ================================================================
       
   553  * intel_pixel.c:
       
   554  */	
       
   555 extern void intelInitPixelFuncs( struct dd_function_table *functions );
       
   556 
       
   557 
       
   558 
       
   559 #endif
       
   560