summaryrefslogtreecommitdiff
path: root/Source/DirectFB/gfxdrivers/sis315
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DirectFB/gfxdrivers/sis315')
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/Makefile.am42
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/Makefile.in607
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315.c355
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315.h59
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_accel.c250
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_accel.h32
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_compat.h89
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_mmio.c51
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_mmio.h37
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_regs.h161
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_state.c164
-rwxr-xr-xSource/DirectFB/gfxdrivers/sis315/sis315_state.h34
12 files changed, 1881 insertions, 0 deletions
diff --git a/Source/DirectFB/gfxdrivers/sis315/Makefile.am b/Source/DirectFB/gfxdrivers/sis315/Makefile.am
new file mode 100755
index 0000000..de0b424
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/Makefile.am
@@ -0,0 +1,42 @@
+## Makefile.am for DirectFB/src/core/gfxcards/sis315
+
+INCLUDES = \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/systems
+
+sis315_LTLIBRARIES = libdirectfb_sis315.la
+
+if BUILD_STATIC
+sis315_DATA = $(sis315_LTLIBRARIES:.la=.o)
+endif
+
+sis315dir = $(MODULEDIR)/gfxdrivers
+
+libdirectfb_sis315_la_SOURCES = \
+ sis315.c \
+ sis315.h \
+ sis315_accel.c \
+ sis315_accel.h \
+ sis315_compat.h \
+ sis315_mmio.c \
+ sis315_mmio.h \
+ sis315_regs.h \
+ sis315_state.c \
+ sis315_state.h
+
+libdirectfb_sis315_la_LDFLAGS = \
+ -module \
+ -avoid-version \
+ $(DFB_LDFLAGS)
+
+libdirectfb_sis315_la_LIBADD = \
+ $(top_builddir)/lib/direct/libdirect.la \
+ $(top_builddir)/src/libdirectfb.la
+
+
+include $(top_srcdir)/rules/libobject.make
+
diff --git a/Source/DirectFB/gfxdrivers/sis315/Makefile.in b/Source/DirectFB/gfxdrivers/sis315/Makefile.in
new file mode 100755
index 0000000..e41ae8e
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/Makefile.in
@@ -0,0 +1,607 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/rules/libobject.make
+subdir = gfxdrivers/sis315
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(sis315dir)" "$(DESTDIR)$(sis315dir)"
+sis315LTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(sis315_LTLIBRARIES)
+libdirectfb_sis315_la_DEPENDENCIES = \
+ $(top_builddir)/lib/direct/libdirect.la \
+ $(top_builddir)/src/libdirectfb.la
+am_libdirectfb_sis315_la_OBJECTS = sis315.lo sis315_accel.lo \
+ sis315_mmio.lo sis315_state.lo
+libdirectfb_sis315_la_OBJECTS = $(am_libdirectfb_sis315_la_OBJECTS)
+libdirectfb_sis315_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libdirectfb_sis315_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libdirectfb_sis315_la_SOURCES)
+DIST_SOURCES = $(libdirectfb_sis315_la_SOURCES)
+sis315DATA_INSTALL = $(INSTALL_DATA)
+DATA = $(sis315_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ASFLAGS = @ASFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@
+DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@
+DFB_LDFLAGS = @DFB_LDFLAGS@
+DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@
+DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@
+DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@
+DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@
+DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@
+DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@
+DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@
+DIRECTFB_VERSION = @DIRECTFB_VERSION@
+DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@
+DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@
+DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@
+DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@
+DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@
+DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@
+DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@
+DSYMUTIL = @DSYMUTIL@
+DYNLIB = @DYNLIB@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+FREETYPE_PROVIDER = @FREETYPE_PROVIDER@
+FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@
+FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@
+FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@
+GIF_PROVIDER = @GIF_PROVIDER@
+GREP = @GREP@
+HAVE_LINUX = @HAVE_LINUX@
+INCLUDEDIR = @INCLUDEDIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@
+JPEG_PROVIDER = @JPEG_PROVIDER@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPNG_CONFIG = @LIBPNG_CONFIG@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_BINARY = @LT_BINARY@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MAN2HTML = @MAN2HTML@
+MKDIR_P = @MKDIR_P@
+MODULEDIR = @MODULEDIR@
+MODULEDIRNAME = @MODULEDIRNAME@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+OSX_LIBS = @OSX_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PNG_PROVIDER = @PNG_PROVIDER@
+RANLIB = @RANLIB@
+RUNTIME_SYSROOT = @RUNTIME_SYSROOT@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SOPATH = @SOPATH@
+STRIP = @STRIP@
+SYSCONFDIR = @SYSCONFDIR@
+SYSFS_LIBS = @SYSFS_LIBS@
+THREADFLAGS = @THREADFLAGS@
+THREADLIB = @THREADLIB@
+TSLIB_CFLAGS = @TSLIB_CFLAGS@
+TSLIB_LIBS = @TSLIB_LIBS@
+VERSION = @VERSION@
+VNC_CFLAGS = @VNC_CFLAGS@
+VNC_CONFIG = @VNC_CONFIG@
+VNC_LIBS = @VNC_LIBS@
+X11_CFLAGS = @X11_CFLAGS@
+X11_LIBS = @X11_LIBS@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/systems
+
+sis315_LTLIBRARIES = libdirectfb_sis315.la
+@BUILD_STATIC_TRUE@sis315_DATA = $(sis315_LTLIBRARIES:.la=.o)
+sis315dir = $(MODULEDIR)/gfxdrivers
+libdirectfb_sis315_la_SOURCES = \
+ sis315.c \
+ sis315.h \
+ sis315_accel.c \
+ sis315_accel.h \
+ sis315_compat.h \
+ sis315_mmio.c \
+ sis315_mmio.h \
+ sis315_regs.h \
+ sis315_state.c \
+ sis315_state.h
+
+libdirectfb_sis315_la_LDFLAGS = \
+ -module \
+ -avoid-version \
+ $(DFB_LDFLAGS)
+
+libdirectfb_sis315_la_LIBADD = \
+ $(top_builddir)/lib/direct/libdirect.la \
+ $(top_builddir)/src/libdirectfb.la
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gfxdrivers/sis315/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu gfxdrivers/sis315/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-sis315LTLIBRARIES: $(sis315_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(sis315dir)" || $(MKDIR_P) "$(DESTDIR)$(sis315dir)"
+ @list='$(sis315_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(sis315LTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(sis315dir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(sis315LTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(sis315dir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-sis315LTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sis315_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(sis315dir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(sis315dir)/$$p"; \
+ done
+
+clean-sis315LTLIBRARIES:
+ -test -z "$(sis315_LTLIBRARIES)" || rm -f $(sis315_LTLIBRARIES)
+ @list='$(sis315_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libdirectfb_sis315.la: $(libdirectfb_sis315_la_OBJECTS) $(libdirectfb_sis315_la_DEPENDENCIES)
+ $(libdirectfb_sis315_la_LINK) -rpath $(sis315dir) $(libdirectfb_sis315_la_OBJECTS) $(libdirectfb_sis315_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sis315.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sis315_accel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sis315_mmio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sis315_state.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-sis315DATA: $(sis315_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(sis315dir)" || $(MKDIR_P) "$(DESTDIR)$(sis315dir)"
+ @list='$(sis315_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(sis315DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sis315dir)/$$f'"; \
+ $(sis315DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sis315dir)/$$f"; \
+ done
+
+uninstall-sis315DATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sis315_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(sis315dir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sis315dir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(sis315dir)" "$(DESTDIR)$(sis315dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-sis315LTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-sis315DATA install-sis315LTLIBRARIES
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-sis315DATA uninstall-sis315LTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-sis315LTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-sis315DATA install-sis315LTLIBRARIES install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-sis315DATA \
+ uninstall-sis315LTLIBRARIES
+
+%.o: .libs/%.a %.la
+ rm -f $<.tmp/*.o
+ if test -d $<.tmp; then rmdir $<.tmp; fi
+ mkdir $<.tmp
+ (cd $<.tmp && $(AR) x ../../$<)
+ $(LD) -o $@ -r $<.tmp/*.o
+ rm -f $<.tmp/*.o && rmdir $<.tmp
+
+.PHONY: $(LTLIBRARIES:%.la=.libs/%.a)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315.c b/Source/DirectFB/gfxdrivers/sis315/sis315.c
new file mode 100755
index 0000000..4717fe7
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315.c
@@ -0,0 +1,355 @@
+/*
+ * $Id: sis315.c,v 1.20 2007-01-29 01:00:45 dok Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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.
+ *
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/ioctl.h>
+
+#include <fbdev/fbdev.h> /* FIXME: Needs to be included before dfb_types.h to work around a type clash with asm/types.h */
+
+#include <directfb.h>
+
+#include <direct/mem.h>
+#include <direct/messages.h>
+
+#include <core/gfxcard.h>
+#include <core/graphics_driver.h>
+#include <core/state.h>
+#include <core/surface.h>
+
+#include <fbdev/fbdev.h>
+
+#include "sis315.h"
+#include "sis315_accel.h"
+#include "sis315_compat.h"
+#include "sis315_state.h"
+
+DFB_GRAPHICS_DRIVER(sis315);
+
+#define SIS_SUPPORTED_DRAWING_FUNCTIONS \
+ (DFXL_FILLRECTANGLE | DFXL_DRAWRECTANGLE | DFXL_DRAWLINE)
+#define SIS_SUPPORTED_DRAWING_FLAGS \
+ (DSDRAW_NOFX)
+#define SIS_SUPPORTED_BLITTING_FUNCTIONS \
+ (DFXL_BLIT | DFXL_STRETCHBLIT)
+#define SIS_SUPPORTED_BLITTING_FLAGS \
+ (DSBLIT_SRC_COLORKEY)
+
+static DFBResult sis_engine_sync(void *driver_data, void *device_data)
+{
+ (void)driver_data;
+ (void)device_data;
+
+ /*
+ * this driver syncs after every command,
+ * so this function can be left empty
+ */
+
+ return DFB_OK;
+}
+
+static void sis_check_state(void *driver_data, void *device_data,
+ CardState *state, DFBAccelerationMask accel)
+{
+ (void)driver_data;
+ (void)device_data;
+
+ switch (state->destination->config.format) {
+ case DSPF_LUT8:
+ case DSPF_ARGB1555:
+ case DSPF_RGB16:
+ case DSPF_RGB32:
+ case DSPF_ARGB:
+ break;
+ default:
+ return;
+ }
+
+ if (DFB_DRAWING_FUNCTION(accel)) {
+ if (state->drawingflags & ~SIS_SUPPORTED_DRAWING_FLAGS)
+ return;
+ if (accel & DFXL_FILLTRIANGLE) {
+ /* this is faster. don't know why. */
+ state->accel = 0;
+ return;
+ }
+ state->accel |= SIS_SUPPORTED_DRAWING_FUNCTIONS;
+ }
+ else {
+ if (state->blittingflags & ~SIS_SUPPORTED_BLITTING_FLAGS)
+ return;
+
+ switch (state->source->config.format) {
+ case DSPF_LUT8:
+ case DSPF_ARGB1555:
+ case DSPF_RGB16:
+ case DSPF_RGB32:
+ case DSPF_ARGB:
+ break;
+ default:
+ return;
+ }
+
+ if (state->source->config.format != state->destination->config.format)
+ return;
+
+ state->accel |= SIS_SUPPORTED_BLITTING_FUNCTIONS;
+ }
+}
+
+static void sis_set_state(void *driver_data, void *device_data,
+ GraphicsDeviceFuncs *funcs, CardState *state,
+ DFBAccelerationMask accel)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ (void)funcs;
+
+ if (state->mod_hw) {
+ if (state->mod_hw & SMF_SOURCE)
+ dev->v_source = 0;
+
+ if (state->mod_hw & SMF_DESTINATION)
+ dev->v_color = dev->v_destination = 0;
+ else if (state->mod_hw & SMF_COLOR)
+ dev->v_color = 0;
+
+ if (state->mod_hw & SMF_SRC_COLORKEY)
+ dev->v_src_colorkey = 0;
+
+// if (state->mod_hw & SMF_BLITTING_FLAGS)
+// dev->v_blittingflags = 0;
+ }
+
+ switch (accel) {
+ case DFXL_FILLRECTANGLE:
+ case DFXL_DRAWRECTANGLE:
+ case DFXL_DRAWLINE:
+ sis_validate_dst(drv, dev, state);
+ sis_validate_color(drv, dev, state);
+ state->set = SIS_SUPPORTED_DRAWING_FUNCTIONS;
+ break;
+ case DFXL_BLIT:
+ sis_validate_src(drv, dev, state);
+ sis_validate_dst(drv, dev, state);
+ if (state->blittingflags & DSBLIT_DST_COLORKEY)
+ sis_set_dst_colorkey(drv, dev, state);
+ if (state->blittingflags & DSBLIT_SRC_COLORKEY)
+ sis_set_src_colorkey(drv, dev, state);
+ state->set = SIS_SUPPORTED_BLITTING_FUNCTIONS;
+ break;
+ case DFXL_STRETCHBLIT:
+ sis_validate_src(drv, dev, state);
+ sis_validate_dst(drv, dev, state);
+ if (state->blittingflags & DSBLIT_DST_COLORKEY)
+ sis_set_dst_colorkey(drv, dev, state);
+ if (state->blittingflags & DSBLIT_SRC_COLORKEY)
+ sis_set_src_colorkey(drv, dev, state);
+ state->set = DFXL_STRETCHBLIT;
+ break;
+ default:
+ D_BUG("unexpected drawing or blitting function");
+ break;
+ }
+
+ if ((state->mod_hw & SMF_CLIP) && (accel!=DFXL_STRETCHBLIT))
+ sis_set_clip(drv, &state->clip);
+
+ state->mod_hw = 0;
+}
+
+static void check_sisfb_version(SiSDriverData *drv, const struct sisfb_info *i)
+{
+ u32 sisfb_version = SISFB_VERSION(i->sisfb_version,
+ i->sisfb_revision,
+ i->sisfb_patchlevel);
+
+ if (sisfb_version < SISFB_VERSION(1, 6, 23)) {
+ fprintf(stderr, "*** Warning: sisfb version < 1.6.23 detected, "
+ "please update your driver! ***\n");
+ drv->has_auto_maximize = false;
+ }
+ else {
+ drv->has_auto_maximize = true;
+ }
+}
+
+/*
+ * exported symbols...
+ */
+
+static int driver_probe(CoreGraphicsDevice *device)
+{
+ switch (dfb_gfxcard_get_accelerator(device)) {
+ case FB_ACCEL_SIS_GLAMOUR_2:
+ case FB_ACCEL_SIS_XABRE:
+ case FB_ACCEL_XGI_VOLARI_Z:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static void driver_get_info(CoreGraphicsDevice *device,
+ GraphicsDriverInfo *info)
+{
+ (void)device;
+
+ snprintf(info->name, DFB_GRAPHICS_DRIVER_INFO_NAME_LENGTH,
+ "SiS 315 Driver");
+ snprintf(info->vendor, DFB_GRAPHICS_DRIVER_INFO_VENDOR_LENGTH,
+ "Andreas Oberritter <obi@saftware.de>");
+
+ info->version.major = 0;
+ info->version.minor = 1;
+
+ info->driver_data_size = sizeof(SiSDriverData);
+ info->device_data_size = sizeof(SiSDeviceData);
+}
+
+static DFBResult driver_init_driver(CoreGraphicsDevice *device,
+ GraphicsDeviceFuncs *funcs,
+ void *driver_data,
+ void *device_data,
+ CoreDFB *core)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ FBDev *dfb_fbdev;
+ struct sisfb_info *fbinfo;
+ u32 fbinfo_size;
+ u32 zero = 0;
+
+ (void)device_data;
+
+ dfb_fbdev = dfb_system_data();
+ if (!dfb_fbdev)
+ return DFB_IO;
+
+ if (ioctl(dfb_fbdev->fd, SISFB_GET_INFO_SIZE, &fbinfo_size) == 0) {
+ fbinfo = D_MALLOC(fbinfo_size);
+ drv->get_info = SISFB_GET_INFO | (fbinfo_size << 16);
+ drv->get_automaximize = SISFB_GET_AUTOMAXIMIZE;
+ drv->set_automaximize = SISFB_SET_AUTOMAXIMIZE;
+ }
+ else {
+ fbinfo = D_MALLOC(sizeof(struct sisfb_info));
+ drv->get_info = SISFB_GET_INFO_OLD;
+ drv->get_automaximize = SISFB_GET_AUTOMAXIMIZE_OLD;
+ drv->set_automaximize = SISFB_SET_AUTOMAXIMIZE_OLD;
+ }
+
+ if (fbinfo == NULL)
+ return DFB_NOSYSTEMMEMORY;
+
+ if (ioctl(dfb_fbdev->fd, drv->get_info, fbinfo) == -1) {
+ D_FREE(fbinfo);
+ return DFB_IO;
+ }
+
+ check_sisfb_version(drv, fbinfo);
+
+ D_FREE(fbinfo);
+
+ if (drv->has_auto_maximize) {
+ if (ioctl(dfb_fbdev->fd, drv->get_automaximize, &drv->auto_maximize))
+ return DFB_IO;
+ if (drv->auto_maximize)
+ if (ioctl(dfb_fbdev->fd, drv->set_automaximize, &zero))
+ return DFB_IO;
+ }
+
+ drv->mmio_base = dfb_gfxcard_map_mmio(device, 0, -1);
+ if (!drv->mmio_base)
+ return DFB_IO;
+
+ /* base functions */
+ funcs->EngineSync = sis_engine_sync;
+ funcs->CheckState = sis_check_state;
+ funcs->SetState = sis_set_state;
+
+ /* drawing functions */
+ funcs->FillRectangle = sis_fill_rectangle;
+ funcs->DrawRectangle = sis_draw_rectangle;
+ funcs->DrawLine = sis_draw_line;
+
+ /* blitting functions */
+ funcs->Blit = sis_blit;
+ funcs->StretchBlit = sis_stretchblit;
+
+ /* allocate buffer for stretchBlit with colorkey */
+ drv->buffer_offset = dfb_gfxcard_reserve_memory( device, 1024*768*4 );
+
+ return DFB_OK;
+}
+
+static DFBResult driver_init_device(CoreGraphicsDevice *device,
+ GraphicsDeviceInfo *device_info,
+ void *driver_data,
+ void *device_data)
+{
+ (void)device;
+ (void)driver_data;
+ (void)device_data;
+
+ snprintf(device_info->name,
+ DFB_GRAPHICS_DEVICE_INFO_NAME_LENGTH, "315");
+ snprintf(device_info->vendor,
+ DFB_GRAPHICS_DEVICE_INFO_VENDOR_LENGTH, "SiS");
+
+ device_info->caps.flags = CCF_CLIPPING;
+ device_info->caps.accel = SIS_SUPPORTED_DRAWING_FUNCTIONS |
+ SIS_SUPPORTED_BLITTING_FUNCTIONS;
+ device_info->caps.drawing = SIS_SUPPORTED_DRAWING_FLAGS;
+ device_info->caps.blitting = SIS_SUPPORTED_BLITTING_FLAGS;
+
+ device_info->limits.surface_byteoffset_alignment = 32 * 4;
+ device_info->limits.surface_pixelpitch_alignment = 32;
+
+ return DFB_OK;
+}
+
+static void driver_close_device(CoreGraphicsDevice *device,
+ void *driver_data,
+ void *device_data)
+{
+ (void)device;
+ (void)driver_data;
+ (void)device_data;
+}
+
+static void driver_close_driver(CoreGraphicsDevice *device,
+ void *driver_data)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+
+ dfb_gfxcard_unmap_mmio(device, drv->mmio_base, -1);
+
+ if ((drv->has_auto_maximize) && (drv->auto_maximize)) {
+ FBDev *dfb_fbdev = dfb_system_data();
+ if (!dfb_fbdev)
+ return;
+ ioctl(dfb_fbdev->fd, drv->set_automaximize, &drv->auto_maximize);
+ }
+}
+
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315.h b/Source/DirectFB/gfxdrivers/sis315/sis315.h
new file mode 100755
index 0000000..e8b3632
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315.h
@@ -0,0 +1,59 @@
+/*
+ * $Id: sis315.h,v 1.6 2006-11-28 10:53:42 klan Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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 _SIS315_H
+#define _SIS315_H
+
+#include <direct/types.h>
+
+typedef struct {
+ volatile u8 *mmio_base;
+ bool has_auto_maximize;
+ u32 auto_maximize;
+ /* ioctls */
+ int get_info;
+ int get_automaximize;
+ int set_automaximize;
+ unsigned long buffer_offset;
+} SiSDriverData;
+
+typedef struct {
+ /* state validation */
+ int v_blittingflags;
+ int v_color;
+ int v_destination;
+ int v_source;
+ int v_dst_colorkey;
+ int v_src_colorkey;
+
+ /* stored values */
+ int blit_cmd;
+ int blit_rop;
+ int cmd_bpp;
+ int color;
+ int src_offset;
+ int src_pitch;
+ int dst_offset;
+ int dst_pitch;
+} SiSDeviceData;
+
+#endif /* _SIS315_H */
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_accel.c b/Source/DirectFB/gfxdrivers/sis315/sis315_accel.c
new file mode 100755
index 0000000..99e5489
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_accel.c
@@ -0,0 +1,250 @@
+/*
+ * $Id: sis315_accel.c,v 1.4 2006-10-29 23:24:50 dok Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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.
+ *
+ */
+
+#include <config.h>
+
+#include <directfb.h>
+#include <core/coredefs.h>
+
+#include "sis315.h"
+#include "sis315_mmio.h"
+#include "sis315_regs.h"
+
+static void dump_cmd(SiSDriverData *drv)
+{
+ int i;
+ fprintf(stderr,"MMIO8200--MMIO8240 \n");
+ for( i = 0x8200 ; i < 0x8240 ; i+=0x10 )
+ {
+ fprintf(stderr,"[%04X]: %08lX %08lX %08lX %08lX\n",i,
+ sis_rl(drv->mmio_base, i),
+ sis_rl(drv->mmio_base, i+4),
+ sis_rl(drv->mmio_base, i+8),
+ sis_rl(drv->mmio_base, i+12));
+ }
+}
+
+
+static void sis_idle(SiSDriverData *drv)
+{
+ while (!(sis_rl(drv->mmio_base, SIS315_2D_CMD_QUEUE_STATUS) & 0x80000000));
+}
+
+static void sis_cmd(SiSDriverData *drv, SiSDeviceData *dev, u8 pat, u8 src, u32 type, u8 rop)
+{
+ sis_wl(drv->mmio_base, SIS315_2D_CMD, SIS315_2D_CMD_RECT_CLIP_EN |
+ dev->cmd_bpp | (rop << 8) |
+ pat | src | type);
+
+ sis_wl(drv->mmio_base, SIS315_2D_FIRE_TRIGGER, 0);
+ /* dump_cmd(drv); */
+ sis_idle(drv);
+}
+
+bool sis_fill_rectangle(void *driver_data, void *device_data, DFBRectangle *rect)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ sis_wl(drv->mmio_base, SIS315_2D_DST_Y, (rect->x << 16) | rect->y);
+ sis_wl(drv->mmio_base, SIS315_2D_RECT_WIDTH, (rect->h << 16) | rect->w);
+
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_BITBLT,
+ SIS315_ROP_COPY_PAT);
+
+ return true;
+}
+
+bool sis_draw_rectangle(void *driver_data, void *device_data, DFBRectangle *rect)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ /* from top left ... */
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X0, (rect->y << 16) | rect->x);
+ /* ... to top right ... */
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X1, (rect->y << 16) | (rect->x + rect->w - 1));
+ /* ... to bottom right ... */
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X(2), ((rect->y + rect->h - 1) << 16) | (rect->x + rect->w - 1));
+ /* ... to bottom left ... */
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X(3), ((rect->y + rect->h - 1) << 16) | rect->x);
+ /* ... and back to top left */
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X(4), ((rect->y + 1) << 16) | rect->x);
+
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_COUNT, 4);
+
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_LINE_DRAW,
+ SIS315_ROP_COPY_PAT);
+
+ return true;
+}
+
+bool sis_draw_line(void *driver_data, void *device_data, DFBRegion *line)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X0, (line->y1 << 16) | line->x1);
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_X1, (line->y2 << 16) | line->x2);
+ sis_wl(drv->mmio_base, SIS315_2D_LINE_COUNT, 1);
+
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_LINE_DRAW,
+ SIS315_ROP_COPY_PAT);
+
+ return true;
+}
+
+bool sis_blit(void *driver_data, void *device_data, DFBRectangle *rect, int dx, int dy)
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_Y, (rect->x << 16) | rect->y);
+ sis_wl(drv->mmio_base, SIS315_2D_DST_Y, (dx << 16) | (dy & 0xffff) );
+ sis_wl(drv->mmio_base, SIS315_2D_RECT_WIDTH, (rect->h << 16) | rect->w);
+
+ if (dev->v_src_colorkey) {
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_TRANSPARENT_BITBLT,
+ SIS315_ROP_AND_INVERTED_PAT);
+ }
+ else {
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_BITBLT,
+ SIS315_ROP_COPY);
+ }
+
+ return true;
+}
+
+bool sis_stretchblit(void *driver_data, void *device_data, DFBRectangle *sr, DFBRectangle *dr )
+{
+ SiSDriverData *drv = (SiSDriverData *)driver_data;
+ SiSDeviceData *dev = (SiSDeviceData *)device_data;
+
+ long lDstWidth, lDstHeight, lSrcWidth, lSrcHeight;
+ long lSmallWidth, lLargeWidth, lSmallHeight, lLargeHeight;
+ long lXInitErr, lYInitErr;
+ unsigned long dst_offset, src_offset, src_pitch, dst_pitch, src_colorkey;
+
+ if((dr->w > 0xfff)|(dr->h > 0xfff))
+ return false;
+
+ lSrcWidth = sr->w;
+ lDstWidth = dr->w;
+ lSrcHeight = sr->h;
+ lDstHeight = dr->h;
+
+ if(lDstWidth > lSrcWidth)
+ {
+ lLargeWidth = lDstWidth;
+ lSmallWidth = lSrcWidth;
+ lXInitErr = 3 * lSrcWidth - 2 * lDstWidth;
+ }
+ else
+ {
+ lLargeWidth = lSrcWidth;
+ lSmallWidth = lDstWidth;
+ lXInitErr = lDstWidth; //HW design
+ }
+
+ if(lDstHeight > lSrcHeight)
+ {
+ lLargeHeight = lDstHeight;
+ lSmallHeight = lSrcHeight;
+ lYInitErr = 3 * lSrcHeight - 2 * lDstHeight;
+ }
+ else
+ {
+ lLargeHeight = lSrcHeight;
+ lSmallHeight = lDstHeight;
+ lYInitErr = lDstHeight; //HW design
+ }
+
+ src_colorkey = sis_rl(drv->mmio_base, SIS315_2D_TRANS_SRC_KEY_HIGH);
+
+ sis_wl(drv->mmio_base, 0x8208, (sr->x << 16) | sr->y & 0xFFFF);
+ sis_wl(drv->mmio_base, 0x820C, ( dr->x << 16) | dr->y & 0xFFFF);
+
+ sis_wl(drv->mmio_base, 0x8218, (dr->h << 16) | dr->w & 0x0FFF);
+ sis_wl(drv->mmio_base, 0x821c, (sr->h << 16) | sr->w & 0x0FFF);
+
+ sis_wl(drv->mmio_base, 0x8220, ((((lSmallWidth - lLargeWidth) * 2) << 16 ) | ((lSmallWidth * 2) & 0xFFFF)));
+ sis_wl(drv->mmio_base, 0x8224, ((((lSmallHeight - lLargeHeight) * 2) << 16 ) | ((lSmallHeight * 2) & 0xFFFF)));
+ sis_wl(drv->mmio_base, 0x8228, ((lYInitErr << 16) | (lXInitErr & 0xFFFF)));
+
+ dev->blit_cmd = SIS_2D_CMD_DST_Y_INC | SIS_2D_CMD_SRC_X_INC \
+ | SIS_2D_CMD_SRC_Y_INC | SIS_2D_CMD_DST_X_INC | SIS315_2D_CMD_STRETCH_BITBLT;
+
+ if(dev->v_src_colorkey) /* DSBLIT_SRC_COLORKEY */
+ {
+ dst_offset = sis_rl(drv->mmio_base, SIS315_2D_DST_ADDR);
+ src_offset = sis_rl(drv->mmio_base, SIS315_2D_SRC_ADDR);
+ src_pitch = sis_rl(drv->mmio_base, 0x8204);
+ dst_pitch = sis_rl(drv->mmio_base, 0x8214);
+
+ /* drv->buffer_offset reserve 1024x768x4 at driver_init_driver() in sis315.c */
+ sis_wl(drv->mmio_base, SIS315_2D_DST_ADDR, drv->buffer_offset);
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ dev->blit_cmd,
+ SIS315_ROP_COPY);
+
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_ADDR, drv->buffer_offset);
+ sis_wl(drv->mmio_base, SIS315_2D_DST_ADDR, dst_offset);
+ sis_wl(drv->mmio_base, 0x8204, dst_pitch);
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_Y, (dr->x << 16) | dr->y);
+ sis_wl(drv->mmio_base, SIS315_2D_DST_Y, (dr->x << 16) | (dr->y & 0xffff));
+ sis_wl(drv->mmio_base, SIS315_2D_RECT_WIDTH, (dr->h << 16) | dr->w);
+
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_SRC_KEY_HIGH, src_colorkey);
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_SRC_KEY_LOW, src_colorkey);
+
+
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ SIS315_2D_CMD_TRANSPARENT_BITBLT,
+ SIS315_ROP_AND_INVERTED_PAT);
+
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_ADDR, src_offset); /*restore*/
+ sis_wl(drv->mmio_base, 0x8204, src_pitch);
+ }
+ else /*simple stretch bitblt */
+ {
+
+ //fprintf(stderr,"dev->blit_cmd = %x \n",dev->blit_cmd);
+ sis_cmd(drv, dev, SIS315_2D_CMD_PAT_FG_REG,
+ SIS315_2D_CMD_SRC_VIDEO,
+ dev->blit_cmd,
+ SIS315_ROP_COPY);
+ }
+
+ return true;
+}
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_accel.h b/Source/DirectFB/gfxdrivers/sis315/sis315_accel.h
new file mode 100755
index 0000000..11ead88
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_accel.h
@@ -0,0 +1,32 @@
+/*
+ * $Id: sis315_accel.h,v 1.2 2006-10-29 23:24:50 dok Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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 _SIS315_ACCEL_H
+#define _SIS315_ACCEL_H
+
+bool sis_fill_rectangle(void *driver_data, void *device_data, DFBRectangle *rect);
+bool sis_draw_rectangle(void *driver_data, void *device_data, DFBRectangle *rect);
+bool sis_draw_line(void *driver_data, void *device_data, DFBRegion *line);
+bool sis_blit(void *driver_data, void *device_data, DFBRectangle *rect, int dx, int dy);
+bool sis_stretchblit(void *driver_data, void *device_data, DFBRectangle *sr, DFBRectangle *dr );
+
+#endif /* _SIS315_ACCEL_H */
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_compat.h b/Source/DirectFB/gfxdrivers/sis315/sis315_compat.h
new file mode 100755
index 0000000..c6f33da
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_compat.h
@@ -0,0 +1,89 @@
+#ifndef _SIS315_COMPAT_H
+#define _SIS315_COMPAT_H
+
+#include <dfb_types.h>
+
+#include <fbdev/fb.h>
+
+#ifndef FB_ACCEL_SIS_GLAMOUR_2
+#define FB_ACCEL_SIS_GLAMOUR_2 40 /* SiS 315, 650, 740 */
+#endif
+#ifndef FB_ACCEL_SIS_XABRE
+#define FB_ACCEL_SIS_XABRE 41 /* SiS 330 ("Xabre") */
+#endif
+#ifndef FB_ACCEL_XGI_VOLARI_Z
+#define FB_ACCEL_XGI_VOLARI_Z 48 /* Z7 Z9 */
+#endif
+
+struct sisfb_info {
+ u32 sisfb_id; /* for identifying sisfb */
+#ifndef SISFB_ID
+#define SISFB_ID 0x53495346 /* Identify myself with 'SISF' */
+#endif
+ u32 chip_id; /* PCI-ID of detected chip */
+ u32 memory; /* total video memory in KB */
+ u32 heapstart; /* heap start offset in KB */
+ u8 fbvidmode; /* current sisfb mode */
+
+ u8 sisfb_version;
+ u8 sisfb_revision;
+ u8 sisfb_patchlevel;
+
+ u8 sisfb_caps; /* sisfb capabilities */
+
+ u32 sisfb_tqlen; /* turbo queue length (in KB) */
+
+ u32 sisfb_pcibus; /* The card's PCI ID */
+ u32 sisfb_pcislot;
+ u32 sisfb_pcifunc;
+
+ u8 sisfb_lcdpdc; /* PanelDelayCompensation */
+
+ u8 sisfb_lcda; /* Detected status of LCDA for low res/text modes */
+
+ u32 sisfb_vbflags;
+ u32 sisfb_currentvbflags;
+
+ u32 sisfb_scalelcd;
+ u32 sisfb_specialtiming;
+
+ u8 sisfb_haveemi;
+ u8 sisfb_emi30,sisfb_emi31,sisfb_emi32,sisfb_emi33;
+ u8 sisfb_haveemilcd;
+
+ u8 sisfb_lcdpdca; /* PanelDelayCompensation for LCD-via-CRT1 */
+
+ u16 sisfb_tvxpos, sisfb_tvypos; /* Warning: Values + 32 ! */
+
+ u32 sisfb_heapsize; /* heap size (in KB) */
+ u32 sisfb_videooffset; /* Offset of viewport in video memory (in bytes) */
+
+ u32 sisfb_curfstn; /* currently running FSTN/DSTN mode */
+ u32 sisfb_curdstn;
+
+ u16 sisfb_pci_vendor; /* PCI vendor (SiS or XGI) */
+
+ u32 sisfb_vbflags2; /* ivideo->vbflags2 */
+
+ u8 sisfb_can_post; /* sisfb can POST this card */
+ u8 sisfb_card_posted; /* card is POSTED */
+ u8 sisfb_was_boot_device; /* This card was the boot video device (ie is primary) */
+
+ u8 reserved[183]; /* for future use */
+};
+
+#define SISFB_GET_INFO_SIZE _IOR(0xF3,0x00,u32)
+
+#define SISFB_GET_INFO _IOR(0xF3,0x01,struct sisfb_info)
+#define SISFB_GET_AUTOMAXIMIZE _IOR(0xF3,0x03,u32)
+#define SISFB_SET_AUTOMAXIMIZE _IOW(0xF3,0x03,u32)
+
+#define SISFB_GET_INFO_OLD _IOR('n',0xF8,u32)
+#define SISFB_GET_AUTOMAXIMIZE_OLD _IOR('n',0xFA,u32)
+#define SISFB_SET_AUTOMAXIMIZE_OLD _IOW('n',0xFA,u32)
+
+
+#define SISFB_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+
+
+#endif /* _SIS315_COMPAT_H */
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.c b/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.c
new file mode 100755
index 0000000..415ea0b
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.c
@@ -0,0 +1,51 @@
+/*
+ (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 <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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.
+*/
+
+#include "config.h"
+#include "sis315_mmio.h"
+#include "direct/util.h"
+
+u32 sis_rl(volatile u8 *mmio, unsigned int offset)
+{
+#ifdef WORDS_BIGENDIAN
+ u32 r = *(volatile u32 *)(mmio + offset);
+ return BSWAP32(r);
+#else
+ return *(volatile u32 *)(mmio + offset);
+#endif
+}
+
+void sis_wl(volatile u8 *mmio, unsigned int offset, u32 value)
+{
+#ifdef WORDS_BIGENDIAN
+ *(volatile u32 *)(mmio + offset) = BSWAP32(value);
+#else
+ *(volatile u32 *)(mmio + offset) = value;
+#endif
+}
+
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.h b/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.h
new file mode 100755
index 0000000..42de5f0
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_mmio.h
@@ -0,0 +1,37 @@
+/*
+ (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 <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ 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 _SIS315_MMIO_H
+#define _SIS315_MMIO_H
+
+#include <dfb_types.h>
+
+extern __inline__ u32 sis_rl(volatile u8 *mmio, unsigned int offset);
+extern __inline__ void sis_wl(volatile u8 *mmio, unsigned int offset, u32 value);
+
+#endif
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_regs.h b/Source/DirectFB/gfxdrivers/sis315/sis315_regs.h
new file mode 100755
index 0000000..25ff40d
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_regs.h
@@ -0,0 +1,161 @@
+#ifndef _SIS315_REGS_H
+#define _SIS315_REGS_H
+
+#define PAT_REG_SIZE 384
+
+enum sisfb_raster_op_bitblt {
+ SIS315_ROP_CLEAR = 0x00, /* dst = 0, 0 */
+ SIS315_ROP_AND = 0x88, /* dst = dst & src, DSa */
+ SIS315_RON_AND_REVERSE = 0x44, /* dst = ~dst & src, SDna */
+ SIS315_ROP_COPY = 0xCC, /* dst = src, S */
+ SIS315_ROP_AND_INVERTED = 0x22, /* dst = dst & ~src, DSna */
+ SIS315_ROP_NOOP = 0xAA, /* dst = dst, D */
+ SIS315_ROP_XOR = 0x66, /* dst = dst ^ src, DSx */
+ SIS315_ROP_OR = 0xEE, /* dst = dst | src, DSo */
+ SIS315_ROP_NOR = 0x11, /* dst = ~(dst | src), DSon */
+ SIS315_ROP_EQUIV = 0x99, /* dst = dst ^ ~src, DSxn */
+ SIS315_ROP_INVERT = 0x55, /* dst = ~dst, Dn */
+ SIS315_ROP_OR_INVERSE = 0xDD, /* dst = ~dst | src, SDno */
+ SIS315_ROP_COPY_INVERTED = 0x33, /* dst = ~src, Sn */
+ SIS315_ROP_OR_INVERTED = 0xBB, /* dst = ~src | dst, DSno */
+ SIS315_ROP_NAND = 0x77, /* dst = ~(dst & src), DSan */
+ SIS315_ROP_SET = 0xFF, /* dst = 1, 1 */
+
+ /* same as above, but with pattern as source */
+ SIS315_ROP_CLEAR_PAT = 0x00, /* dst = 0, 0 */
+ SIS315_ROP_AND_PAT = 0xA0, /* dst = dst & src, DSa */
+ SIS315_RON_AND_REVERSE_PAT = 0x50, /* dst = ~dst & src, SDna */
+ SIS315_ROP_COPY_PAT = 0xF0, /* dst = src, S */
+ SIS315_ROP_AND_INVERTED_PAT = 0x0A, /* dst = dst & ~src, DSna */
+ SIS315_ROP_NOOP_PAT = 0xAA, /* dst = dst, D */
+ SIS315_ROP_XOR_PAT = 0x5A, /* dst = dst ^ src, DSx */
+ SIS315_ROP_OR_PAT = 0xFA, /* dst = dst | src, DSo */
+ SIS315_ROP_NOR_PAT = 0x05, /* dst = ~(dst | src), DSon */
+ SIS315_ROP_EQUIV_PAT = 0xA5, /* dst = dst ^ ~src, DSxn */
+ SIS315_ROP_INVERT_PAT = 0x55, /* dst = ~dst, Dn */
+ SIS315_ROP_OR_REVERSE_PAT = 0xDD, /* dst = ~dst | src, SDno */
+ SIS315_ROP_COPY_INVERTED_PAT = 0x0F, /* dst = ~src, Sn */
+ SIS315_ROP_OR_INVERTED_PAT = 0xAF, /* dst = ~src | dst, DSno */
+ SIS315_ROP_NAND_PAT = 0x5F, /* dst = ~(dst & src), DSan */
+ SIS315_ROP_SET_PAT = 0xFF, /* dst = 1, 1 */
+};
+
+enum sisfb_raster_op_transparent_bitblt {
+ SIS315_ROP_BLACK,
+ SIS315_ROP_NOT_MERGE_PEN,
+};
+
+enum sis315_2d_registers {
+ SIS315_2D_SRC_ADDR = 0x8200,
+ SIS315_2D_SRC_PITCH = 0x8204, SIS315_2D_AGP_BASE = 0x8206,
+ SIS315_2D_SRC_Y = 0x8208, SIS315_2D_SRC_X = 0x820A,
+ SIS315_2D_DST_Y = 0x820C, SIS315_2D_DST_X = 0x820E,
+ SIS315_2D_DST_ADDR = 0x8210,
+ SIS315_2D_DST_PITCH = 0x8214, SIS315_2D_DST_HEIGHT = 0x8216,
+ SIS315_2D_RECT_WIDTH = 0x8218, SIS315_2D_RECT_HEIGHT = 0x821A,
+ SIS315_2D_PAT_FG_COLOR = 0x821C,
+ SIS315_2D_PAT_BG_COLOR = 0x8220,
+ SIS315_2D_SRC_FG_COLOR = 0x8224,
+ SIS315_2D_SRC_BG_COLOR = 0x8228,
+ SIS315_2D_MONO_MASK = 0x822C,
+ SIS315_2D_LEFT_CLIP = 0x8234, SIS315_2D_TOP_CLIP = 0x8236,
+ SIS315_2D_RIGHT_CLIP = 0x8238, SIS315_2D_BOT_CLIP = 0x823A,
+ SIS315_2D_CMD = 0x823C,
+ SIS315_2D_FIRE_TRIGGER = 0x8240,
+ SIS315_2D_PATTERN_REG = 0x8300
+};
+
+enum SIS315_2d_registers_StretchBlt {
+ SIS315_2D_X_ERROR_TERM = 0x8220,
+ SIS315_2D_Y_ERROR_TERM = 0x8224,
+ SIS315_2D_X_INITIAL_ERROR = 0x8228
+};
+
+enum sis315_2d_registers_drawline {
+ SIS315_2D_LINE_X0 = 0x8208, SIS315_2D_LINE_Y0 = 0x820A,
+ SIS315_2D_LINE_X1 = 0x820C, SIS315_2D_LINE_Y1 = 0x820E,
+ SIS315_2D_LINE_COUNT = 0x8218, SIS315_2D_LINE_STYLE_PERIOD = 0x821A,
+ SIS315_2D_LINE_STYLE_0 = 0x822C,
+ SIS315_2D_LINE_STYLE_1 = 0x8230,
+ SIS315_2D_LINE_Xn = 0x8300, SIS315_2D_LINE_Yn = 0x8302,
+};
+
+#define SIS315_2D_LINE_X(n) (0x8300 + ((n - 2) << 2))
+#define SIS315_2D_LINE_Y(n) (0x8302 + ((n - 2) << 2))
+
+enum sis315_2d_register_transparent_bitblt {
+ SIS315_2D_TRANS_DEST_KEY_HIGH = 0x821C,
+ SIS315_2D_TRANS_DEST_KEY_LOW = 0x8220,
+ SIS315_2D_TRANS_SRC_KEY_HIGH = 0x8224,
+ SIS315_2D_TRANS_SRC_KEY_LOW = 0x8228,
+};
+
+enum sis315_2d_cmd_type {
+ SIS315_2D_CMD_BITBLT = 0x00, SIS315_2D_CMD_COLOREXP = 0x01,
+ SIS315_2D_CMD_ENCOLOREXP = 0x02, SIS315_2D_CMD_MULTIPLE_SCANLINE = 0x03,
+ SIS315_2D_CMD_LINE_DRAW = 0x04, SIS315_2D_CMD_TRAPEZOID_FILL = 0x05,
+ SIS315_2D_CMD_TRANSPARENT_BITBLT = 0x06, SIS315_2D_CMD_ALPHA_BLENDING = 0x07,
+ SIS315_2D_CMD_3D_FUNCTION = 0x08, SIS315_2D_CMD_CLEAR_Z_BUFFER = 0x09,
+ SIS315_2D_CMD_GRADIENT_FILL = 0x0A, SIS315_2D_CMD_STRETCH_BITBLT = 0x0B
+};
+
+enum sis315_2d_cmd_control {
+ /* source selection */
+ SIS315_2D_CMD_SRC_VIDEO = 0x00000000,
+ SIS315_2D_CMD_SRC_SYSTEM = 0x00000010,
+ SIS315_2D_CMD_SRC_AGP = 0x00000020,
+ /* pattern source selection */
+ SIS315_2D_CMD_PAT_FG_REG = 0x00000000,
+ SIS315_2D_CMD_PAT_PAT_REG = 0x00000040,
+ SIS315_2D_CMD_PAT_MONO_MASK = 0x00000080,
+ /* color format flags */
+ SIS315_2D_CMD_CFB_8 = 0x00000000,
+ SIS315_2D_CMD_CFB_16 = 0x00010000,
+ SIS315_2D_CMD_CFB_32 = 0x00020000,
+ /* clipping flags */
+ SIS315_2D_CMD_NOCLIP = 0x00000000,
+ SIS315_2D_CMD_RECT_CLIP_EN = 0x00040000,
+ SIS315_2D_CMD_MERGE_CLIP_DIS = 0x04000000,
+ /* subfunctions for transparent bitblt */
+ SIS315_2D_CMD_OPAQUE = 0x00000000,
+ SIS315_2D_CMD_TRANSPARENT = 0x00100000,
+ /* subfunctions for alpha blended blit */
+ SIS315_2D_CMD_CONSTANT_ALPHA = 0x00000000,
+ SIS315_2D_CMD_PER_PIXEL_ALPHA = 0x00080000,
+ SIS315_2D_CMD_NO_DEST_ALPHA = 0x00100000,
+ SIS315_2D_CMD_3D_FULL_SCENE = 0x00180000,
+ /* subfunctions for color expansion */
+ SIS315_2D_CMD_COLOR_TO_MONO = 0x00100000,
+ SIS315_2D_CMD_AA_TEXT = 0x00200000,
+ /* line flags */
+ SIS315_2D_CMD_NO_LAST_PIXEL = 0x00200000,
+ SIS315_2D_CMD_NO_RESET_COUNTER = 0x00400000,
+ SIS315_2D_CMD_LINE_STLYE_ENABLE = 0x00800000,
+ /* destination */
+ SIS315_DST_VIDEO = 0x00000000,
+ SIS315_DST_AGP = 0x02000000,
+ /*for stretchblit */
+ SIS_2D_CMD_SRC_Y_DEC = 0x00000000,
+ SIS_2D_CMD_SRC_Y_INC = 0x00400000,
+ SIS_2D_CMD_SRC_X_DEC = 0x00000000,
+ SIS_2D_CMD_SRC_X_INC = 0x00200000,
+ SIS_2D_CMD_DST_Y_DEC = 0x00000000,
+ SIS_2D_CMD_DST_Y_INC = 0x00100000,
+ SIS_2D_CMD_DST_X_DEC = 0x00000000,
+ SIS_2D_CMD_DST_X_INC = 0x00080000,
+#if 0
+ SIS315_2D_CMD_DIR_X_INC = 0x00010000,
+ SIS315_2D_CMD_DIR_X_DEC = 0x00000000,
+ SIS315_2D_CMD_DIR_Y_INC = 0x00020000,
+ SIS315_2D_CMD_DIR_Y_DEC = 0x00000000,
+#endif
+};
+
+enum sis315_command_queue_registers {
+ SIS315_2D_CMD_QUEUE_BASE_ADDRESS = 0x85C0,
+ SIS315_2D_CMD_QUEUE_WRITE_POINTER = 0x85C4,
+ SIS315_2D_CMD_QUEUE_READ_POINTER = 0x85C8,
+ SIS315_2D_CMD_QUEUE_STATUS = 0x85CC
+};
+
+#endif /* _SIS315_REGS_H */
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_state.c b/Source/DirectFB/gfxdrivers/sis315/sis315_state.c
new file mode 100755
index 0000000..d78a71e
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_state.c
@@ -0,0 +1,164 @@
+/*
+ * $Id: sis315_state.c,v 1.6 2006-10-29 23:24:50 dok Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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.
+ *
+ */
+
+#include <config.h>
+
+#include <directfb.h>
+
+#include <direct/messages.h>
+
+#include <core/state.h>
+#include <core/surface.h>
+
+#include <gfx/convert.h>
+
+#include "sis315.h"
+#include "sis315_mmio.h"
+#include "sis315_regs.h"
+#include "sis315_state.h"
+
+static u16 dspfToSrcColor(DFBSurfacePixelFormat pf)
+{
+ switch (DFB_BITS_PER_PIXEL(pf)) {
+ case 16:
+ return 0x8000;
+ case 32:
+ return 0xc000;
+ default:
+ return 0x0000;
+ }
+}
+
+static u32 dspfToCmdBpp(DFBSurfacePixelFormat pf)
+{
+ switch (DFB_BITS_PER_PIXEL(pf)) {
+ case 16:
+ return SIS315_2D_CMD_CFB_16;
+ case 32:
+ return SIS315_2D_CMD_CFB_32;
+ default:
+ return SIS315_2D_CMD_CFB_8;
+ }
+}
+
+void sis_validate_color(SiSDriverData *drv, SiSDeviceData *dev, CardState *state)
+{
+ u32 color;
+
+ if (dev->v_color)
+ return;
+
+ switch (state->destination->config.format) {
+ case DSPF_LUT8:
+ color = state->color_index;
+ break;
+ case DSPF_ARGB1555:
+ color = PIXEL_ARGB1555(state->color.a,
+ state->color.r,
+ state->color.g,
+ state->color.b);
+ break;
+ case DSPF_RGB16:
+ color = PIXEL_RGB16(state->color.r,
+ state->color.g,
+ state->color.b);
+ break;
+ case DSPF_RGB32:
+ color = PIXEL_RGB32(state->color.r,
+ state->color.g,
+ state->color.b);
+ break;
+ case DSPF_ARGB:
+ color = PIXEL_ARGB(state->color.a,
+ state->color.r,
+ state->color.g,
+ state->color.b);
+ break;
+ default:
+ D_BUG("unexpected pixelformat");
+ return;
+ }
+
+ sis_wl(drv->mmio_base, SIS315_2D_PAT_FG_COLOR, color);
+
+ dev->v_color = 1;
+}
+
+void sis_validate_dst(SiSDriverData *drv, SiSDeviceData *dev, CardState *state)
+{
+ CoreSurface *dst = state->destination;
+
+ if (dev->v_destination)
+ return;
+
+ dev->cmd_bpp = dspfToCmdBpp(dst->config.format);
+
+ sis_wl(drv->mmio_base, SIS315_2D_DST_ADDR, state->dst.offset);
+ sis_wl(drv->mmio_base, SIS315_2D_DST_PITCH, (0xffff << 16) | state->dst.pitch);
+
+ dev->v_destination = 1;
+}
+
+void sis_validate_src(SiSDriverData *drv, SiSDeviceData *dev, CardState *state)
+{
+ CoreSurface *src = state->source;
+
+ if (dev->v_source)
+ return;
+
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_ADDR, state->src.offset);
+ sis_wl(drv->mmio_base, SIS315_2D_SRC_PITCH, (dspfToSrcColor(src->config.format) << 16) | state->src.pitch);
+
+ dev->v_source = 1;
+}
+
+void sis_set_dst_colorkey(SiSDriverData *drv, SiSDeviceData *dev, CardState *state)
+{
+ if (dev->v_dst_colorkey)
+ return;
+
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_DEST_KEY_HIGH, state->dst_colorkey);
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_DEST_KEY_LOW, state->dst_colorkey);
+
+ dev->v_dst_colorkey = 1;
+}
+
+void sis_set_src_colorkey(SiSDriverData *drv, SiSDeviceData *dev, CardState *state)
+{
+ if (dev->v_src_colorkey)
+ return;
+
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_SRC_KEY_HIGH, state->src_colorkey);
+ sis_wl(drv->mmio_base, SIS315_2D_TRANS_SRC_KEY_LOW, state->src_colorkey);
+
+ dev->v_src_colorkey = 1;
+}
+
+
+void sis_set_clip(SiSDriverData *drv, DFBRegion *clip)
+{
+ sis_wl(drv->mmio_base, SIS315_2D_LEFT_CLIP, (clip->y1 << 16) | clip->x1);
+ sis_wl(drv->mmio_base, SIS315_2D_RIGHT_CLIP, (clip->y2 << 16) | clip->x2);
+}
+
+
+
diff --git a/Source/DirectFB/gfxdrivers/sis315/sis315_state.h b/Source/DirectFB/gfxdrivers/sis315/sis315_state.h
new file mode 100755
index 0000000..e0c86d7
--- /dev/null
+++ b/Source/DirectFB/gfxdrivers/sis315/sis315_state.h
@@ -0,0 +1,34 @@
+/*
+ * $Id: sis315_state.h,v 1.2 2006-10-29 23:24:50 dok Exp $
+ *
+ * Copyright (C) 2003 by Andreas Oberritter <obi@saftware.de>
+ *
+ * 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 _SIS315_STATE_H
+#define _SIS315_STATE_H
+
+void sis_validate_color(SiSDriverData *drv, SiSDeviceData *dev, CardState *state);
+void sis_validate_dst(SiSDriverData *drv, SiSDeviceData *dev, CardState *state);
+void sis_validate_src(SiSDriverData *drv, SiSDeviceData *dev, CardState *state);
+void sis_set_dst_colorkey(SiSDriverData *drv, SiSDeviceData *dev, CardState *state);
+void sis_set_src_colorkey(SiSDriverData *drv, SiSDeviceData *dev, CardState *state);
+void sis_set_clip(SiSDriverData *drv, DFBRegion *clip);
+
+
+#endif /* _SIS315_STATE_H */