diff options
Diffstat (limited to 'bltsville/bltsville/include/bltsville.h')
-rw-r--r-- | bltsville/bltsville/include/bltsville.h | 602 |
1 files changed, 0 insertions, 602 deletions
diff --git a/bltsville/bltsville/include/bltsville.h b/bltsville/bltsville/include/bltsville.h deleted file mode 100644 index 632628e..0000000 --- a/bltsville/bltsville/include/bltsville.h +++ /dev/null @@ -1,602 +0,0 @@ -/* - * bltsville.h - * - * Copyright (C) 2011 Texas Instruments, Inc. - * - * This file is part of BLTsville, an open application programming interface - * (API) for accessing 2-D software or hardware implementations. - * - * This work is licensed under the Creative Commons Attribution-NoDerivs 3.0 - * Unported License. To view a copy of this license, visit - * http://creativecommons.org/licenses/by-nd/3.0/ or send a letter to - * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, - * 94041, USA. - */ - -#ifndef BLTSVILLE_H -#define BLTSVILLE_H - -#include "ocd.h" -#include "bverror.h" -#include "bvblend.h" -#include "bvfilter.h" -#include "bvbuffdesc.h" -#include "bvcache.h" -#include "bventry.h" -#include "bvsurfgeom.h" - -/* - * bvrect - This structure is used to specify rectangles in BLTsville. - */ -struct bvrect { - int left; - int top; - unsigned int width; - unsigned int height; -}; - - -/* - * BVFLAG_* - These define the type of BLT to be performed and are placed in - * the bvparams.flags element. - */ -#define BVFLAG_OP_SHIFT 0 -#define BVFLAG_OP_MASK (0xF << BVFLAG_OP_SHIFT) - -/* 0 reserved */ -#define BVFLAG_ROP (0x1 << BVFLAG_OP_SHIFT) /* ROP4 spec'd in rop */ -#define BVFLAG_BLEND (0x2 << BVFLAG_OP_SHIFT) /* blend spec'd in blend */ -/* 3 reserved */ -#define BVFLAG_FILTER (0x4 << BVFLAG_OP_SHIFT) /* filter spec'd in filter */ -/* 5-F reserved */ - -#define BVFLAG_KEY_SRC 0x00000010 /* source color key - value spec'd - by pcolorkey; Mutually exclusive - with BVFLAG_KEY_DST */ -#define BVFLAG_KEY_DST 0x00000020 /* dest color key - value spec'd - by pcolorkey; Mutually exclusive - with BVFLAG_KEY_SRC */ -#define BVFLAG_CLIP 0x00000040 /* clipping rectangle spec'd by - cliprect */ -#define BVFLAG_SRCMASK 0x00000080 /* when scaling a masked copy, mask - at the source instead of the - (default) destination */ - -#define BVFLAG_ASYNC 0x00000100 /* call should return once queued */ - -#define BVFLAG_TILE_SRC1 0x00000200 /* source 1 is tiled */ -#define BVFLAG_TILE_SRC2 0x00000400 /* source 2 is tiled */ -#define BVFLAG_TILE_MASK 0x00000800 /* mask is tiled */ - - -#define BVFLAG_BATCH_SHIFT 12 -#define BVFLAG_BATCH_MASK (3 << BVFLAG_BATCH_SHIFT) - -#define BVFLAG_BATCH_NONE (0 << BVFLAG_BATCH_SHIFT) /* not batched */ -#define BVFLAG_BATCH_BEGIN (1 << BVFLAG_BATCH_SHIFT) /* begin batch */ -#define BVFLAG_BATCH_CONTINUE (2 << BVFLAG_BATCH_SHIFT) /* continue batch */ -#define BVFLAG_BATCH_END (3 << BVFLAG_BATCH_SHIFT) /* end batch */ - - -#define BVFLAG_HORZ_FLIP_SRC1 0x00004000 /* flip src1 horizontally */ -#define BVFLAG_VERT_FLIP_SRC1 0x00008000 /* flip src1 vertically */ -#define BVFLAG_HORZ_FLIP_SRC2 0x00010000 /* flip src2 horizontally */ -#define BVFLAG_VERT_FLIP_SRC2 0x00020000 /* flip src2 vertically */ -#define BVFLAG_HORZ_FLIP_MASK 0x00040000 /* flip mask horizontally */ -#define BVFLAG_VERT_FLIP_MASK 0x00080000 /* flip mask vertically */ - - -#define BVFLAG_SCALE_RETURN 0x00100000 /* return scale type used */ -#define BVFLAG_DITHER_RETURN 0x00200000 /* return dither type used */ - - -#define BVFLAG_SRC2_AUXDSTRECT 0x00400000 /* src2auxdstrect used */ -#define BVFLAG_MASK_AUXDSTRECT 0x00800000 /* maskauxdstrect used */ - -#define BVFLAG_TESTPARAMS_NOP 0x01000000 /* test params only - no BLT */ -/**** Bits 25-31 reserved ****/ - -/* - * BVIMPL_* - BLTsville implementations may be combined under managers to - * allow clients to take advantage of multiple implementations without doing - * so explicitly. The BVIMPL_* definition are placed into the - * bvparams.implementation member by the client to override the manager's - * choice of implementation. - */ -#define BVIMPL_ANY 0 -#define BVIMPL_FIRST_HW (1 << 31) /* Continues to the right */ -#define BVIMPL_FIRST_CPU (1 << 0) /* Continues to the left */ - - -/* - * bvscalemode - This specifies the type of scaling to perform. - */ -#define BVSCALEDEF_VENDOR_SHIFT 24 -#define BVSCALEDEF_VENDOR_MASK (0xFF << BVSCALEDEF_VENDOR_SHIFT) - -#define BVSCALEDEF_VENDOR_ALL (0 << BVSCALEDEF_VENDOR_SHIFT) -#define BVSCALEDEF_VENDOR_TI (1 << BVSCALEDEF_VENDOR_SHIFT) -/* 0xF0-0xFE reserved */ -#define BVSCALEDEF_VENDOR_GENERIC (0xFF << BVSCALEDEF_VENDOR_SHIFT) - -/***** VENDOR_GENERIC definitions *****/ -/**** Bits 23-22 indicate classification ****/ -#define BVSCALEDEF_CLASS_SHIFT 22 -#define BVSCALEDEF_IMPLICIT (0 << BVSCALEDEF_CLASS_SHIFT) -#define BVSCALEDEF_EXPLICIT (1 << BVSCALEDEF_CLASS_SHIFT) -/* 2-3 reserved */ -#define BVSCALEDEF_CLASS_MASK (3 << BVSCALEDEF_CLASS_SHIFT) - -/**** IMPLICIT definitions ****/ -/*** Bits 21-16 indicate the quality (speed) desired ***/ -#define BVSCALEDEF_QUALITY_SHIFT 16 -#define BVSCALEDEF_FASTEST (0x00 << BVSCALEDEF_QUALITY_SHIFT) -#define BVSCALEDEF_GOOD (0x15 << BVSCALEDEF_QUALITY_SHIFT) -#define BVSCALEDEF_BETTER (0x2A << BVSCALEDEF_QUALITY_SHIFT) -#define BVSCALEDEF_BEST (0x3F << BVSCALEDEF_QUALITY_SHIFT) -#define BVSCALEDEF_QUALITY_MASK (0x3F << BVSCALEDEF_QUALITY_SHIFT) -/* Bits 12-15 are reserved */ -/*** Bits 11-8 indicate the desired technique ***/ -#define BVSCALEDEF_TECHNIQUE_SHIFT 8 -#define BVSCALEDEF_DONT_CARE (0x0 << BVSCALEDEF_TECHNIQUE_SHIFT) -#define BVSCALEDEF_NOT_NEAREST_NEIGHBOR (0x1 << BVSCALEDEF_TECHNIQUE_SHIFT) -#define BVSCALEDEF_POINT_SAMPLE (0x2 << BVSCALEDEF_TECHNIQUE_SHIFT) -#define BVSCALEDEF_INTERPOLATED (0x3 << BVSCALEDEF_TECHNIQUE_SHIFT) -#define BVSCALEDEF_TECHNIQUE_MASK (0xF << BVSCALEDEF_TECHNIQUE_SHIFT) -/* Bits 2-7 reserved */ -/*** Bits 1-0 indicate the type of image ***/ -#define BVSCALEDEF_TYPE_SHIFT 0 -/* 0 don't know */ -#define BVSCALEDEF_PHOTO (1 << BVSCALEDEF_TYPE_SHIFT) -#define BVSCALEDEF_DRAWING (2 << BVSCALEDEF_TYPE_SHIFT) -/* 3 reserved */ -#define BVSCALEDEF_TYPE_MASK (3 << BVSCALEDEF_TYPE_SHIFT) - -/**** EXPLICIT definitions ****/ -/* Bits 16-21 reserved */ -#define BVSCALEDEF_HORZ_SHIFT 8 -#define BVSCALEDEF_HORZ_MASK (0xFF << BVSCALEDEF_HORZ_SHIFT) - -#define BVSCALEDEF_VERT_SHIFT 0 -#define BVSCALEDEF_VERT_MASK (0xFF << BVSCALEDEF_VERT_SHIFT) - -#define BVSCALEDEF_NEAREST_NEIGHBOR 0x00 -#define BVSCALEDEF_LINEAR 0x01 -#define BVSCALEDEF_CUBIC 0x02 -#define BVSCALEDEF_3_TAP 0x03 -/* 0x04 reserved */ -#define BVSCALEDEF_5_TAP 0x05 -/* 0x06 reserved */ -#define BVSCALEDEF_7_TAP 0x07 -/* 0x08 reserved */ -#define BVSCALEDEF_9_TAP 0x09 -/* 0x0A-0xFF reserved */ - -enum bvscalemode { - BVSCALE_FASTEST = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_DONT_CARE, - BVSCALE_FASTEST_NOT_NEAREST_NEIGHBOR = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_NOT_NEAREST_NEIGHBOR, - BVSCALE_FASTEST_POINT_SAMPLE = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_POINT_SAMPLE, - BVSCALE_FASTEST_INTERPOLATED = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_INTERPOLATED, - BVSCALE_FASTEST_PHOTO = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_PHOTO, - BVSCALE_FASTEST_DRAWING = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_FASTEST | - BVSCALEDEF_DRAWING, - BVSCALE_GOOD = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_GOOD | - BVSCALEDEF_DONT_CARE, - BVSCALE_GOOD_POINT_SAMPLE = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_GOOD | - BVSCALEDEF_POINT_SAMPLE, - BVSCALE_GOOD_INTERPOLATED = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_GOOD | - BVSCALEDEF_INTERPOLATED, - BVSCALE_GOOD_PHOTO = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_GOOD | - BVSCALEDEF_PHOTO, - BVSCALE_GOOD_DRAWING = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_GOOD | - BVSCALEDEF_DRAWING, - BVSCALE_BETTER = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BETTER | - BVSCALEDEF_DONT_CARE, - BVSCALE_BETTER_POINT_SAMPLE = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BETTER | - BVSCALEDEF_POINT_SAMPLE, - BVSCALE_BETTER_INTERPOLATED = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BETTER | - BVSCALEDEF_INTERPOLATED, - BVSCALE_BETTER_PHOTO = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BETTER | - BVSCALEDEF_PHOTO, - BVSCALE_BETTER_DRAWING = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BETTER | - BVSCALEDEF_DRAWING, - BVSCALE_BEST = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BEST | - BVSCALEDEF_DONT_CARE, - BVSCALE_BEST_POINT_SAMPLE = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BEST | - BVSCALEDEF_POINT_SAMPLE, - BVSCALE_BEST_INTERPOLATED = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BEST | - BVSCALEDEF_INTERPOLATED, - BVSCALE_BEST_PHOTO = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BEST | - BVSCALEDEF_PHOTO, - BVSCALE_BEST_DRAWING = BVSCALEDEF_VENDOR_ALL | - BVSCALEDEF_IMPLICIT | - BVSCALEDEF_BEST | - BVSCALEDEF_DRAWING, - - BVSCALE_NEAREST_NEIGHBOR = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_NEAREST_NEIGHBOR << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_NEAREST_NEIGHBOR << BVSCALEDEF_VERT_SHIFT), - BVSCALE_BILINEAR = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_LINEAR << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_LINEAR << BVSCALEDEF_VERT_SHIFT), - BVSCALE_BICUBIC = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_CUBIC << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_CUBIC << BVSCALEDEF_VERT_SHIFT), - BVSCALE_3x3_TAP = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_3_TAP << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_3_TAP << BVSCALEDEF_VERT_SHIFT), - BVSCALE_5x5_TAP = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_5_TAP << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_5_TAP << BVSCALEDEF_VERT_SHIFT), - BVSCALE_7x7_TAP = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_7_TAP << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_7_TAP << BVSCALEDEF_VERT_SHIFT), - BVSCALE_9x9_TAP = BVSCALEDEF_VENDOR_GENERIC | - BVSCALEDEF_EXPLICIT | - (BVSCALEDEF_9_TAP << BVSCALEDEF_HORZ_SHIFT) | - (BVSCALEDEF_9_TAP << BVSCALEDEF_VERT_SHIFT), - -#ifdef BVSCALE_EXTERNAL_INCLUDE -#include BVSCALE_EXTERNAL_INCLUDE -#endif -}; - - -/* - * bvdithermode - This defines the type of dithering to use. - */ -#define BVDITHERDEF_VENDOR_SHIFT 24 -#define BVDITHERDEF_VENDOR_MASK (0xFF << BVDITHERDEF_VENDOR_SHIFT) - -#define BVDITHERDEF_VENDOR_ALL (0 << BVDITHERDEF_VENDOR_SHIFT) -#define BVDITHERDEF_VENDOR_TI (1 << BVDITHERDEF_VENDOR_SHIFT) -/* 0xF0-0xFE reserved */ -#define BVDITHERDEF_VENDOR_GENERIC (0xFF << BVDITHERDEF_VENDOR_SHIFT) - -/***** VENDOR_GENERIC definitions *****/ -/* Bits 18-23 reserved */ -/**** Bits 17-16 indicate the type of image - 0 = don't know ****/ -#define BVDITHERDEF_TYPE_SHIFT 16 -#define BVDITHERDEF_PHOTO (0x01 << BVDITHERDEF_TYPE_SHIFT) -#define BVDITHERDEF_DRAWING (0x02 << BVDITHERDEF_TYPE_SHIFT) -/**** Bits 15-8 indicate the desired technique ****/ -#define BVDITHERDEF_TECHNIQUE_SHIFT 8 -#define BVDITHERDEF_DONT_CARE (0x00 << BVDITHERDEF_TECHNIQUE_SHIFT) -#define BVDITHERDEF_RANDOM (0x01 << BVDITHERDEF_TECHNIQUE_SHIFT) -#define BVDITHERDEF_ORDERED (0x02 << BVDITHERDEF_TECHNIQUE_SHIFT) -#define BVDITHERDEF_DIFFUSED (0x04 << BVDITHERDEF_TECHNIQUE_SHIFT) -#define BVDITHERDEF_ON (0xFF << BVDITHERDEF_TECHNIQUE_SHIFT) -/**** Bits 7-0 indicate the quality (speed) desired ****/ -#define BVDITHERDEF_QUALITY_SHIFT 0 -#define BVDITHERDEF_FASTEST (0x00 << BVDITHERDEF_QUALITY_SHIFT) -#define BVDITHERDEF_GOOD (0x55 << BVDITHERDEF_QUALITY_SHIFT) -#define BVDITHERDEF_BETTER (0xAA << BVDITHERDEF_QUALITY_SHIFT) -#define BVDITHERDEF_BEST (0xFF << BVDITHERDEF_QUALITY_SHIFT) - -enum bvdithermode { - BVDITHER_FASTEST = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_DONT_CARE, - BVDITHER_FASTEST_ON = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_ON, - BVDITHER_FASTEST_RANDOM = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_RANDOM, - BVDITHER_FASTEST_ORDERED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_ORDERED, - BVDITHER_FASTEST_DIFFUSED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_DIFFUSED, - BVDITHER_FASTEST_PHOTO = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_PHOTO, - BVDITHER_FASTEST_DRAWING = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_FASTEST | - BVDITHERDEF_DRAWING, - BVDITHER_GOOD = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_DONT_CARE, - BVDITHER_GOOD_ON = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_ON, - BVDITHER_GOOD_RANDOM = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_RANDOM, - BVDITHER_GOOD_ORDERED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_ORDERED, - BVDITHER_GOOD_DIFFUSED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_DIFFUSED, - BVDITHER_GOOD_PHOTO = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_PHOTO, - BVDITHER_GOOD_DRAWING = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_GOOD | - BVDITHERDEF_DRAWING, - BVDITHER_BETTER = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_DONT_CARE, - BVDITHER_BETTER_ON = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_ON, - BVDITHER_BETTER_RANDOM = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_RANDOM, - BVDITHER_BETTER_ORDERED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_ORDERED, - BVDITHER_BETTER_DIFFUSED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_DIFFUSED, - BVDITHER_BETTER_PHOTO = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_PHOTO, - BVDITHER_BETTER_DRAWING = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BETTER | - BVDITHERDEF_DRAWING, - BVDITHER_BEST = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_DONT_CARE, - BVDITHER_BEST_ON = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_ON, - BVDITHER_BEST_RANDOM = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_RANDOM, - BVDITHER_BEST_ORDERED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_ORDERED, - BVDITHER_BEST_DIFFUSED = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_DIFFUSED, - BVDITHER_BEST_PHOTO = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_PHOTO, - BVDITHER_BEST_DRAWING = BVDITHERDEF_VENDOR_ALL | - BVDITHERDEF_BEST | - BVDITHERDEF_DRAWING, - - BVDITHER_NONE = BVDITHERDEF_VENDOR_GENERIC + 0, - BVDITHER_ORDERED_2x2 = BVDITHERDEF_VENDOR_GENERIC + 4, - BVDITHER_ORDERED_4x4 = BVDITHERDEF_VENDOR_GENERIC + 16, - BVDITHER_ORDERED_2x2_4x4 = BVDITHERDEF_VENDOR_GENERIC + 4 + 16, - /* 2x2 for 6->8, 4x4 for 5->8 */ - -#ifdef BVDITHER_EXTERNAL_INCLUDE -#include BVDITHER_EXTERNAL_INCLUDE -#endif -}; - - -/* - * BVTILE_* flags - These specify parameters used when tiling. - */ -#define BVTILE_LEFT_SHIFT 0 -#define BVTILE_TOP_SHIFT (BVTILE_LEFT_SHIFT + 2) -#define BVTILE_RIGHT_SHIFT (BVTILE_TOP_SHIFT + 2) -#define BVTILE_BOTTOM_SHIFT (BVTILE_RIGHT_SHIFT + 2) -#define BVTILE_LEFT_REPEAT (0 << BVTILE_LEFT_SHIFT) /* ...012301230123 */ -#define BVTILE_TOP_REPEAT (0 << BVTILE_TOP_SHIFT) /* ...012301230123 */ -#define BVTILE_RIGHT_REPEAT (0 << BVTILE_RIGHT_SHIFT) /* 012301230123... */ -#define BVTILE_BOTTOM_REPEAT (0 << BVTILE_BOTTOM_SHIFT) /* 012301230123... */ -#define BVTILE_LEFT_MIRROR (1 << BVTILE_LEFT_SHIFT) /* ...012332100123 */ -#define BVTILE_TOP_MIRROR (1 << BVTILE_TOP_SHIFT) /* ...012332100123 */ -#define BVTILE_RIGHT_MIRROR (1 << BVTILE_RIGHT_SHIFT) /* 012332100123... */ -#define BVTILE_BOTTOM_MIRROR (1 << BVTILE_BOTTOM_SHIFT) /* 012332100123... */ - -/* - * bvtileparams - This structure provides additional parameters needed when - * tiling. This structure replaces the bvbuffdesc in bvbltparams when the - * associated BVFLAG_TILE_* flag is set in bvbltparams.flags. - */ -struct bvtileparams { - unsigned int structsize; /* used to ID structure version */ - unsigned long flags; /* tile flags */ - void *virtaddr; /* pointer to the brush */ - int dstleft; /* horizontal offset */ - int dsttop; /* vertical offset */ - unsigned int srcwidth; /* w/dst width to spec horz scale */ - unsigned int srcheight; /* w/dst height to spec vert scale */ -}; - -/* - * BVBATCH_* - These flags specify the parameters that change between - * batched BLTs, when BVFLAG_CONTINUE or BVFLAG_END set. - */ -#define BVBATCH_OP 0x00000001 /* type of operation changed */ -#define BVBATCH_KEY 0x00000002 /* color key changed */ -#define BVBATCH_MISCFLAGS 0x00000004 /* other flags changed */ -#define BVBATCH_ALPHA 0x00000008 /* global alpha changed */ -#define BVBATCH_DITHER 0x00000010 /* dither changed */ -#define BVBATCH_SCALE 0x00000020 /* scaling type changed */ -/* Bits 6-7 reserved */ -#define BVBATCH_DST 0x00000100 /* destination surface changed */ -#define BVBATCH_SRC1 0x00000200 /* source 1 surface changed */ -#define BVBATCH_SRC2 0x00000400 /* source 2 surface changed */ -#define BVBATCH_MASK 0x00000800 /* mask surface changed */ -#define BVBATCH_DSTRECT_ORIGIN 0x00001000 /* dest rect origin changed */ -#define BVBATCH_DSTRECT_SIZE 0x00002000 /* dest rect dimensions changed */ -#define BVBATCH_SRC1RECT_ORIGIN 0x00004000 /* src 1 rect origin changed */ -#define BVBATCH_SRC1RECT_SIZE 0x00008000 /* src 1 rect dimensions changed */ -#define BVBATCH_SRC2RECT_ORIGIN 0x00010000 /* src 2 rect origin changed */ -#define BVBATCH_SRC2RECT_SIZE 0x00020000 /* src 2 rect dimensions changed */ -#define BVBATCH_MASKRECT_ORIGIN 0x00040000 /* mask rect origin changed */ -#define BVBATCH_MASKRECT_SIZE 0x00080000 /* mask rect dimensions changed */ -#define BVBATCH_CLIPRECT_ORIGIN 0x00100000 /* Clip rect origin changed */ -#define BVBATCH_CLIPRECT_SIZE 0x00200000 /* Clip rect dimensions changed */ -#define BVBATCH_CLIPRECT (BVBATCH_CLIPRECT_ORIGIN | \ - BVBATCH_CLIPRECT_SIZE) /* clip rect... */ - /* ...changed */ -#define BVBATCH_TILE_SRC1 0x00400000 /* tile params for src 1 changed */ -#define BVBATCH_TILE_SRC2 0x00800000 /* tile params for src 2 changed */ -#define BVBATCH_TILE_MASK 0x00100000 /* tile params for mask changed */ -/* Bits 21-30 reserved */ -#define BVBATCH_ENDNOP 0x80000000 /* just end batch, don't do BLT; - only with BVFLAG_BATCH_END */ - -/* - * bvcallbackerror - This structure is passed into the callback function - * if an error occurs. - */ -struct bvcallbackerror { - unsigned int structsize; /* used to ID structure version */ - enum bverror error; /* error during async BLT */ - char *errdesc; /* 0-terminated ASCII string - with extended error info (not - for end users) */ -}; - -/* - * bvbatch - an implementation-specific container for batch information; - * not used by client; forward declaration here - */ -struct bvbatch; - -/* - * bvinbuff - provides the buffer in bvbltparams - */ -union bvinbuff { - struct bvbuffdesc *desc; /* buffer description when - associated BVFLAG_TILE_* - is not set */ - struct bvtileparams *tileparams; /* tile params when associated - BVFLAG_TILE_* flag is set */ -}; - -/* - * bvop - used to hold the operation in bvbltparams - */ -union bvop { - unsigned short rop; /* when BVFLAG_ROP set */ - enum bvblend blend; /* when BVFLAG_BLEND set */ - struct bvfilter *filter; /* when BVFLAG_FILTER set */ -}; - - -/* - * bvbltparams - This structure is passed into bv_blt() to specify the - * parameters for a BLT. - */ -struct bvbltparams { - unsigned int structsize; /* (i) used to ID structure version */ - char *errdesc; /* (o) 0-terminated ASCII string - with extended error info (not - for end users) */ - - unsigned long implementation; /* (i) override manager choice */ - - unsigned long flags; /* (i) see BVFLAG_* above */ - - union bvop op; /* (i) operation; determined by - BVFLAG_OP_MASK bits in flags */ - - void *colorkey; /* (i) pointer to color key pixel - matching non-SUBSAMPLE format - of the keyed surface when - BVFLAG_KEY_* is set */ - - union bvalpha globalalpha; /* (i) global alpha when BVFLAG_BLEND - set in flags and - BVBLENDDEF_GLOBAL_* is set in - blend; typed determined by - BVBLENDDEF_GLOBAL_* */ - - enum bvscalemode scalemode; /* (i/o) type of scaling */ - enum bvdithermode dithermode; /* (i/o) type of dither */ - - struct bvbuffdesc *dstdesc; /* (i) dest after bv_map() */ - struct bvsurfgeom *dstgeom; /* (i) dest surf fmt and geometry */ - struct bvrect dstrect; /* (i) rect into which data written */ - - union bvinbuff src1; /* (i) src1 buffer */ - struct bvsurfgeom *src1geom; /* (i) src1 surf fmt and geometry */ - struct bvrect src1rect; /* (i) rect from which data is read */ - - union bvinbuff src2; /* (i) src2 buffer */ - struct bvsurfgeom *src2geom; /* (i) src2 surf fmt and geometry */ - struct bvrect src2rect; /* (i) rect from which data is read */ - - union bvinbuff mask; /* (i) mask buffer */ - struct bvsurfgeom *maskgeom; /* (i) mask surf fmt and geometry */ - struct bvrect maskrect; /* (i) rect from which data is read */ - - struct bvrect cliprect; /* (i) dest clipping rect when - BVFLAG_CLIP flag set */ - - unsigned long batchflags; /* (i) BVBATCH_* flags used to - indicate params changed between - batch BLTs */ - struct bvbatch *batch; /* (i/o) handle for associated batch; - returned when - BVFLAG_BATCH_BEGIN set; - provided to subsequent BLTs - with BVFLAG_BATCH_CONTINUE */ - - void (*callbackfn)(struct bvcallbackerror *err, - unsigned long callbackdata); /* (i) callback - function when - BVFLAG_ASYNC is set - - err is 0 when no - error; handle contains - callbackdata below */ - unsigned long callbackdata; /* (i) callback data */ - - struct bvrect src2auxdstrect; - struct bvrect maskauxdstrect; -}; - -#endif /* BLTSVILLE_H */ |