changeset 10897:553c746933b9

6741199 Remove cg6 kernel driver [PSARC 2008/488] (fix unref)
author Garrett D'Amore <Garrett.Damore@Sun.COM>
date Wed, 28 Oct 2009 09:52:39 -0700
parents 007ca67ca400
children 1883b621b3ea
files usr/src/uts/sun/sys/pixrect.h
diffstat 1 files changed, 0 insertions(+), 375 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/sun/sys/pixrect.h	Wed Oct 28 09:43:07 2009 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,375 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef	_SYS_PIXRECT_H
-#define	_SYS_PIXRECT_H
-
-#pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SunOS4.1.2 1.51 */
-
-#include <sys/types.h>	/* system type defs */
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-/*
- * This file defines the programmer interface to the pixrect abstraction.
- * A pixrect is a rectangular array of pixels on which a number of
- * operations are defined.
- *
- * Each pixrect has as visible attributes its height and width in
- * pixels and the number of bits stored for each pixel.	 It also supports
- * several operations.	The proper way to think of the operations is
- * that they are messages sent to the pixrect.	The operations are:
- *
- *	pr_destroy	Destroy a pixrect.
- *	pr_rop		Raster operation from another pixrect to the
- *			destination pixrect.  The case where the source
- *			and destination overlap is properly handled.
- *	pr_stencil	Raster operation from source pixrect to the
- *			dest pixrect using a stencil pixrect as a 'cookie
- *			cutter' to perform a spatial write enable.
- *	pr_batchrop	Like pr_rop, but source is an array of pixrects,
- *			and an offset to be applied before each pixrect.
- *			This is specifically designed for operations like
- *			putting up text, which consists of a number of
- *			characters from a font, each given by a pixrect.
- *	pr_get		Get the value of a single pixel from a pixrect.
- *	pr_put		Change a single pixel value in a pixrect.
- *	pr_vector	Draw a vector in a pixrect
- *	pr_region	Create a new pixrect which describes a rectangular
- *			sub-region of an existing pixrect.
- *	pr_putcolormap	Write a portion of the colormap.
- *	pr_getcolormap	Read a portion of the colormap.
- *	pr_putattributes Set the plane mask.
- *	pr_getattributes Get the plane mask.
- */
-
-/*
- * There are a number of structures used in the arguments to pixrects:
- *
- *	struct pr_pos		A position within a pixrect is a pair of
- *				integers giving the offset from the upper
- *				left corner.  The pixels within a pixrect
- *				are numbered with (0, 0) at the upper left
- *				and (width-1, height-1) at the lower right.
- *	struct pr_prpos		A pixrect and a position within it.
- *	struct pr_size		A pair of integers representing the
- *				size of a rectangle within a pixrect.
- *	struct pr_subregion	A pixrect, a position and a size,
- *				specifying a rectangular sub-region.
- */
-
-struct pr_size {
-	int	x, y;
-};
-
-typedef struct pixrect {
-	struct	pixrectops *pr_ops;	/* operations appropriate to this pr */
-	struct	pr_size pr_size;	/* pixels per dimension */
-	int	pr_depth;		/* bits per pixel */
-	caddr_t pr_data;		/* device-dependent data */
-} Pixrect;
-#define	pr_width	pr_size.x
-#define	pr_height	pr_size.y
-
-struct pr_pos {
-	int	x, y;
-};
-
-struct pr_prpos {
-	Pixrect *pr;
-	struct	pr_pos pos;
-};
-
-struct pr_subregion {
-	Pixrect *pr;
-	struct	pr_pos pos;
-	struct	pr_size size;
-};
-
-/*
- * Pr_product is used when doing multiplications involving pixrects,
- * and casts its arguments to that the compiler will use 16 by 16 multiplies.
- */
-#ifndef pr_product
-#if defined(__sun) && !defined(__sparc)
-#define	pr_product(a, b)	((short)(a) * (short)(b))
-#else
-#define	pr_product(a, b)	((a) * (b))
-#endif
-#endif
-
-#ifndef _KERNEL
-/*
- * Takes device file name.  This is how a screen pixrect is created.
- */
-extern Pixrect *pr_open();
-#endif	/* !_KERNEL */
-
-/*
- * Pixrect ops vector, used by pr_ macros below to call the appropriate
- * device dependent function for the destination pixrect.
- */
-struct pixrectops {
-	int	(*pro_rop)();
-#ifndef _KERNEL
-	int	(*pro_stencil)();
-	int	(*pro_batchrop)();
-	int	(*pro_nop)();		/* place holder */
-	int	(*pro_destroy)();
-	int	(*pro_get)();
-	int	(*pro_put)();
-	int	(*pro_vector)();
-	Pixrect * (*pro_region)();
-#endif	/* !_KERNEL */
-	int	(*pro_putcolormap)();
-#ifndef _KERNEL
-	int	(*pro_getcolormap)();
-#endif	/* !_KERNEL */
-	int	(*pro_putattributes)();
-#ifndef _KERNEL
-	int	(*pro_getattributes)();
-#endif	/* !_KERNEL */
-#ifdef _KERNEL
-	int	(*pro_nop)();		/* place holder */
-#endif	/* _KERNEL */
-};
-
-#if !defined(__lint) || defined(_KERNEL)
-
-#define	pr_rop(dpr, dx, dy, w, h, op, spr, sx, sy) \
-	(*(dpr)->pr_ops->pro_rop)((dpr), (dx), (dy), (w), (h), (op), \
-		(spr), (sx), (sy))
-#define	pr_putcolormap(pr, ind, cnt, red, grn, blu) \
-	(*(pr)->pr_ops->pro_putcolormap)((pr), (ind), (cnt), \
-		(red), (grn), (blu))
-#define	pr_putattributes(pr, planes) \
-	(*(pr)->pr_ops->pro_putattributes)((pr), (planes))
-#define	_PR_IOCTL_KERNEL_DEFINED
-#define	pr_ioctl(pr, cmd, data) \
-	((pr)->pr_ops->pro_nop ? \
-	(*(pr)->pr_ops->pro_nop)((pr), (cmd), (data)) : -1)
-
-#ifndef _KERNEL
-
-#define	pr_stencil(dpr, dx, dy, w, h, op, stpr, stx, sty, spr, sx, sy) \
-	(*(dpr)->pr_ops->pro_stencil)((dpr), (dx), (dy), (w), (h), (op), \
-		(stpr), (stx), (sty), (spr), (sx), (sy))
-#define	pr_batchrop(dpr, x, y, op, sbp, n) \
-	(*(dpr)->pr_ops->pro_batchrop)((dpr), (x), (y), (op), (sbp), (n))
-#define	pr_destroy(pr) \
-	(*(pr)->pr_ops->pro_destroy)(pr)
-#define	pr_get(pr, x, y) \
-	(*(pr)->pr_ops->pro_get)((pr), (x), (y))
-#define	pr_put(pr, x, y, val) \
-	(*(pr)->pr_ops->pro_put)((pr), (x), (y), (val))
-#define	pr_vector(pr, x0, y0, x1, y1, op, color) \
-	(*(pr)->pr_ops->pro_vector)((pr), (x0), (y0), (x1), (y1), (op), \
-		(color))
-#define	pr_region(pr, x, y, w, h) \
-	(*(pr)->pr_ops->pro_region)((pr), (x), (y), (w), (h))
-#define	pr_getcolormap(pr, ind, cnt, red, grn, blu) \
-	(*(pr)->pr_ops->pro_getcolormap)((pr), (ind), (cnt), \
-		(red), (grn), (blu))
-#define	pr_getattributes(pr, planes) \
-	(*(pr)->pr_ops->pro_getattributes)((pr), (planes))
-
-#endif	/* !_KERNEL */
-
-#else	/* !__lint || _KERNEL */
-
-extern pr_rop();
-extern pr_stencil();
-extern pr_batchrop();
-extern pr_destroy();
-extern pr_get();
-extern pr_put();
-extern pr_vector();
-extern Pixrect *pr_region();
-extern pr_putcolormap();
-extern pr_getcolormap();
-extern pr_putattributes();
-extern pr_getattributes();
-
-#endif	/* __lint */
-
-/*
- * Several of the above operations return a common, distinguished value when
- * an error arises.  That value is defined as follows:
- */
-#define	PIX_ERR -1
-
-/*
- * Operations.	The 'op' in 'rasterop' may be any binary Boolean function,
- * encoded as an integer from 0 to 15 (the op code) shifted left by one bit.
- * The function is applied per-pixel.
- *
- * The following permit the op to be expressed as Boolean combinations
- * of the two inputs 'src' and 'dst'.  Thus oring the source and destination
- * together is written as PIX_SRC|PIX_DST, while xoring the source with the
- * destination is PIX_SRC^PIX_DST.  Since ~op would set the color and clip
- * bits, the macro PIX_NOT is provided for use in place of ~.
- */
-#define	PIX_SRC		(0xC << 1)
-#define	PIX_DST		(0xA << 1)
-#define	PIX_NOT(op)	((op) ^ 0x1E)
-#define	PIX_CLR		(0x0 << 1)
-#define	PIX_SET		(0xF << 1)
-
-/* macros which tell whether a rasterop needs SRC or DST values */
-#define	PIXOP_NEEDS_DST(op)	((((op)>>1)^(op)) & PIX_NOT(PIX_DST))
-#define	PIXOP_NEEDS_SRC(op)	((((op)>>2)^(op)) & PIX_NOT(PIX_SRC))
-
-/* macros for encoding and extracting color field */
-#define	PIX_COLOR(c)	((c)<<5)
-#define	PIX_OPCOLOR(op) ((op)>>5)
-#define	PIX_OP_CLIP(op) ((op)&0x1f)
-#define	PIX_OP(op)	((op)&0x1e)
-
-/*
- * The pseudo-operation PIX_DONTCLIP specifies that clipping should not
- * be performed.  PIX_CLIP is also provided, although unnecessary.
- */
-#define	PIX_DONTCLIP		0x1
-#define	PIX_CLIP		0x0
-
-/*
- * The following structured definitions, all prefixed with prs_, correspond
- * to the unstructured definitions above prefixed with pr_.
- */
-
-#if !defined(__lint) || defined(_KERNEL)
-
-#define	prs_rop(dstreg, op, srcprpos) \
-	pr_rop((dstreg).pr, (dstreg).pos.x, (dstreg).pos.y, \
-		(dstreg).size.x, (dstreg).size.y, (op), \
-		(srcprpos).pr, (srcprpos).pos.x, (srcprpos).pos.y)
-#define	prs_stencil(dstreg, op, stenprpos, srcprpos) \
-	pr_stencil((dstreg).pr, (dstreg).pos.x, (dstreg).pos.y, \
-		(dstreg).size.x, (dstreg).size.y, (op), \
-		(stenprpos).pr, (stenprpos).pos.x, (stenprpos).pos.y, \
-		(srcprpos).pr, (srcprpos).pos.x, (srcprpos).pos.y)
-#define	prs_batchrop(dstprpos, op, items, n) \
-	pr_batchrop((dstprpos).pr, (dstprpos).pos.x, (dstprpos).pos.y, \
-		(op), (items), (n))
-#define	prs_destroy(pr)		pr_destroy(pr)
-#define	prs_get(srcprpos) \
-	pr_get((srcprpos).pr, (srcprpos).pos.x, (srcprpos).pos.y)
-#define	prs_put(dstprpos, val) \
-	pr_put((dstprpos).pr, (dstprpos).pos.x, (dstprpos).pos.y, (val))
-#define	prs_vector(pr, pos0, pos1, op, color) \
-	pr_vector((pr), (pos0).x, (pos0).y, (pos1).x, (pos1).y, (op), (color))
-#define	prs_region(dstreg) \
-	pr_region((dstreg).pr, (dstreg).pos.x, (dstreg).pos.y, \
-		(dstreg).size.x, (dstreg).size.y)
-#define	prs_putcolormap(pr, ind, cnt, red, grn, blu) \
-	pr_putcolormap((pr), (ind), (cnt), (red), (grn), (blu))
-#define	prs_getcolormap(pr, ind, cnt, red, grn, blu) \
-	pr_getcolormap((pr), (ind), (cnt), (red), (grn), (blu))
-#define	prs_putattributes(pr, planes)	pr_putattributes((pr), (planes))
-#define	prs_getattributes(pr, planes)	pr_getattributes((pr), (planes))
-
-/* pr_replrop is not currently in the ops vector */
-#define	prs_replrop(dstreg, op, srcprpos) \
-	pr_replrop((dstreg).pr, (dstreg).pos.x, (dstreg).pos.y, \
-		(dstreg).size.x, (dstreg).size.y, (op), \
-		(srcprpos).pr, (srcprpos).pos.x,  (srcprpos).pos.y)
-
-/* pr_close is a synonym for pr_destroy */
-#define	pr_close(pr)	pr_destroy(pr)
-
-/* textured line macro */
-#define	pr_line(pr, x0, y0, x1, y1, brush, tex, op) \
-	pro_line((pr), (x0), (y0), (x1), (y1), (brush), (tex), (op), 0)
-
-#else	/* !__lint || _KERNEL */
-
-extern prs_rop();
-extern prs_stencil();
-extern prs_batchrop();
-extern prs_destroy();
-extern prs_get();
-extern prs_put();
-extern prs_vector();
-extern Pixrect *prs_region();
-extern prs_putcolormap();
-extern prs_getcolormap();
-extern prs_putattributes();
-extern prs_getattributes();
-
-extern prs_replrop();
-extern pr_close();
-extern pr_line();
-
-#endif	/* !__lint || _KERNEL */
-
-
-
-/*
- * magic flag passed to true color frame buffer to force updating the
- * colormap.  Yes, a kludge.
- * Value defined to be the same as PIX_DONT_SET_PLANES purposedly
- */
-#define	PR_FORCE_UPDATE (1 << 24)
-/*
- * Yet another magic flag - to explicitly not use the
- * inverse gamma table.
- */
-#define	PR_DONT_DEGAMMA (1 << 23)
-#define	PR_DEGAMMA	(1 << 22)
-
-#ifdef	ROUNDUP
-#undef	ROUNDUP
-#endif
-#define	ROUNDUP(val, gran)	(((val) - 1 | (gran) - 1) + 1)
-
-/* structure used to specify fields in a 32-bit pixel */
-union fbunit {
-    unsigned int    packed;		/* whole-sale deal */
-    struct {
-	unsigned int	A:8;		/* unused, for now */
-	unsigned int	B:8;		/* blue channel */
-	unsigned int	G:8;		/* green channel */
-	unsigned int	R:8;		/* red channel */
-	}	    channel;		/* access per channel */
-};
-
-#define	pr_putlut(pr, ind, cnt, red, grn, blu) \
-	(*(pr)->pr_ops->pro_putcolormap)((pr), PR_FORCE_UPDATE | (ind), \
-		(cnt), (red), (grn), (blu))
-
-#ifndef _KERNEL
-#define	pr_getlut(pr, ind, cnt, red, grn, blu) \
-	(*(pr)->pr_ops->pro_getcolormap)((pr), PR_FORCE_UPDATE | (ind), \
-		(cnt), (red), (grn), (blu))
-#endif	/* !_KERNEL */
-
-#ifdef	__cplusplus
-}
-#endif
-
-#endif	/* _SYS_PIXRECT_H */