From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/src/gfx/generic/generic.h | 174 ++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100755 Source/DirectFB/src/gfx/generic/generic.h (limited to 'Source/DirectFB/src/gfx/generic/generic.h') diff --git a/Source/DirectFB/src/gfx/generic/generic.h b/Source/DirectFB/src/gfx/generic/generic.h new file mode 100755 index 0000000..7c73c40 --- /dev/null +++ b/Source/DirectFB/src/gfx/generic/generic.h @@ -0,0 +1,174 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifndef __GENERIC_H__ +#define __GENERIC_H__ + +#include + +#include +#include +#include + +/* this order is required for Intel with MMX, how about bigendian? */ + +typedef union { + struct { + u16 b; + u16 g; + u16 r; + u16 a; + } RGB; + struct { + u16 u; + u16 v; + u16 y; + u16 a; + } YUV; +} GenefxAccumulator; + + +typedef struct _GenefxState GenefxState; + +typedef void (*GenefxFunc)(GenefxState *gfxs); + +/* + * State of the virtual graphics processing unit "Genefx" (pron. 'genie facts'). + */ +struct _GenefxState { + GenefxFunc funcs[32]; + + int length; /* span length */ + int Slen; /* span length (source) */ + int Dlen; /* span length (destination) */ + + /* + * state values + */ + void *dst_org[3]; + void *src_org[3]; + int dst_pitch; + int src_pitch; + + int dst_bpp; + int src_bpp; + + DFBSurfaceCapabilities dst_caps; + DFBSurfaceCapabilities src_caps; + + DFBSurfacePixelFormat src_format; + DFBSurfacePixelFormat dst_format; + + int dst_height; + int src_height; + + int dst_field_offset; + int src_field_offset; + + DFBColor color; + + /* + * operands + */ + void *Aop[3]; + void *Bop[3]; + u32 Cop; + + int Astep; + int Bstep; + + u8 YCop; + u8 CbCop; + u8 CrCop; + + int Aop_field; + int Bop_field; + + int AopY; + int BopY; + + /* + * color keys + */ + u32 Dkey; + u32 Skey; + + /* + * color lookup tables + */ + CorePalette *Alut; + CorePalette *Blut; + + /* + * accumulators + */ + void *ABstart; + int ABsize; + GenefxAccumulator *Aacc; + GenefxAccumulator *Bacc; + GenefxAccumulator *Tacc; /* for simultaneous S+D blending */ + GenefxAccumulator Cacc; + GenefxAccumulator SCacc; + + /* + * dataflow control + */ + GenefxAccumulator *Xacc; /* writing pointer for blending */ + GenefxAccumulator *Yacc; /* input pointer for blending */ + GenefxAccumulator *Dacc; + GenefxAccumulator *Sacc; + + void **Sop; + CorePalette *Slut; + + int Ostep; /* controls horizontal blitting direction */ + + int SperD; /* for scaled routines only */ + int Xphase; /* initial value for fractional steps (zero if not clipped) */ + + bool need_accumulator; + + int *trans; + int num_trans; +}; + + +void gGetDriverInfo( GraphicsDriverInfo *info ); +void gGetDeviceInfo( GraphicsDeviceInfo *info ); + +bool gAcquire ( CardState *state, DFBAccelerationMask accel ); +void gRelease ( CardState *state ); + +void gFillRectangle ( CardState *state, DFBRectangle *rect ); +void gDrawLine ( CardState *state, DFBRegion *line ); + +void gBlit ( CardState *state, DFBRectangle *rect, int dx, int dy ); +void gStretchBlit ( CardState *state, DFBRectangle *srect, DFBRectangle *drect ); + + +#endif -- cgit