[WIN32SS]
[reactos.git] / reactos / drivers / video / displays / framebufacc / surface.c
diff --git a/reactos/drivers/video/displays/framebufacc/surface.c b/reactos/drivers/video/displays/framebufacc/surface.c
deleted file mode 100644 (file)
index c73a768..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * ReactOS Generic Framebuffer acclations display driver
- *
- * Copyright (C) 2004 Filip Navara
- * Copyright (C) 2007 Magnus Olsen
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "framebufacc.h"
-
-BOOL 
-InitSurface(PPDEV ppdev,
-            BOOL bForcemapping)
-{
-   VIDEO_MEMORY VideoMemory;
-   VIDEO_MEMORY_INFORMATION VideoMemoryInfo;
-   ULONG returnedDataLength;
-   ULONG RemappingNeeded = 0;
-   ULONG PointerMaxWidth = 0;
-   ULONG PointerMaxHeight = 0;
-
-   /*
-    * Set video mode of our adapter.
-    */
-
-   if (EngDeviceIoControl(ppdev->hDriver,
-                          IOCTL_VIDEO_SET_CURRENT_MODE,
-                          &(ppdev->ModeIndex),
-                          sizeof(ULONG),
-                          &RemappingNeeded,
-                          sizeof(ULONG),
-                          &returnedDataLength))
-   {
-      return FALSE;
-   }
-
-   /* Check if mapping is need it */
-   if ((!bForcemapping) && 
-       (!RemappingNeeded))
-   {
-       return TRUE;
-   }
-   
-
-   /*
-    * Map the framebuffer into our memory.
-    */
-
-   VideoMemory.RequestedVirtualAddress = NULL;
-   if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_MAP_VIDEO_MEMORY,
-                          &VideoMemory, sizeof(VIDEO_MEMORY),
-                          &VideoMemoryInfo, sizeof(VIDEO_MEMORY_INFORMATION),
-                          &returnedDataLength))
-   {
-      return FALSE;
-   }
-
-   /*
-    * Save the real video memory
-    */
-    ppdev->pRealVideoMem = VideoMemoryInfo.FrameBufferBase;
-    ppdev->VideoMemSize = VideoMemoryInfo.VideoRamLength;
-
-
-   /*
-    * Video memory cached
-    *
-    * We maby should only ask max 8MB as cached ?, think of the video ram length is 256MB 
-    */
-
-    ppdev->pVideoMemCache = NULL;
-#ifdef EXPERIMENTAL_ACC_SUPPORT
-
-   ppdev->pVideoMemCache = EngAllocMem(0, (ULONG)VideoMemoryInfo.VideoRamLength, ALLOC_TAG);
-   if (ppdev->pVideoMemCache == NULL)
-   {
-        /* cached off for no avail system memory */
-        ppdev->ScreenPtr = VideoMemoryInfo.FrameBufferBase;
-   }
-   else
-
-#endif
-   {
-        /* cached on, system memory is avail */
-        ppdev->ScreenPtr = ppdev->pRealVideoMem;
-   }
-
-   /* hw mouse pointer support */
-   PointerMaxHeight = ppdev->PointerCapabilities.MaxHeight;
-   PointerMaxWidth = ppdev->PointerCapabilities.MaxWidth * sizeof(ULONG);
-   if (ppdev->PointerCapabilities.Flags & VIDEO_MODE_COLOR_POINTER)
-   {
-        PointerMaxWidth = (ppdev->PointerCapabilities.MaxWidth + 7) / 8;
-   }
-
-   ppdev->PointerAttributesSize = sizeof(VIDEO_POINTER_ATTRIBUTES) + ((sizeof(UCHAR) * PointerMaxWidth * PointerMaxHeight) << 1);
-
-   ppdev->pPointerAttributes = EngAllocMem(0, ppdev->PointerAttributesSize, ALLOC_TAG);
-
-   if (ppdev->pPointerAttributes != NULL)
-   {
-        ppdev->pPointerAttributes->Flags = ppdev->PointerCapabilities.Flags;
-        ppdev->pPointerAttributes->WidthInBytes = PointerMaxWidth;
-        ppdev->pPointerAttributes->Width = ppdev->PointerCapabilities.MaxWidth;
-        ppdev->pPointerAttributes->Height = PointerMaxHeight;
-        ppdev->pPointerAttributes->Column = 0;
-        ppdev->pPointerAttributes->Row = 0;
-        ppdev->pPointerAttributes->Enable = 0;
-   }
-   else
-   {
-       /* no hw mouse was avail */
-       ppdev->PointerAttributesSize = 0;
-   }
-
-   return TRUE;
-}
-
-/*
- * DrvEnableSurface
- *
- * Create engine bitmap around frame buffer and set the video mode requested
- * when PDEV was initialized.
- *
- * Status
- *    @implemented
- */
-
-HSURF APIENTRY
-DrvEnableSurface(
-   IN DHPDEV dhpdev)
-{
-   PPDEV ppdev = (PPDEV)dhpdev;
-   HSURF hSurface;
-   ULONG BitmapType;
-   SIZEL ScreenSize;
-
-
-   /* Setup surface and force the mapping */
-   if (!InitSurface(ppdev, TRUE))
-   {
-       return FALSE;
-   }
-
-   /* Rest the desktop vitual position */
-   ppdev->ScreenOffsetXY.x = 0;
-   ppdev->ScreenOffsetXY.y = 0;
-
-
-   switch (ppdev->BitsPerPixel)
-   {
-      case 8:
-         IntSetPalette(dhpdev, ppdev->PaletteEntries, 0, 256);
-         BitmapType = BMF_8BPP;
-         break;
-
-      case 16:
-         BitmapType = BMF_16BPP;
-         break;
-
-      case 24:
-         BitmapType = BMF_24BPP;
-         break;
-
-      case 32:
-         BitmapType = BMF_32BPP;
-         break;
-
-      default:
-         return FALSE;
-   }
-
-   ppdev->iDitherFormat = BitmapType;
-
-   ScreenSize.cx = ppdev->ScreenWidth;
-   ScreenSize.cy = ppdev->ScreenHeight;
-
-   hSurface = (HSURF)EngCreateBitmap(ScreenSize, ppdev->ScreenDelta, BitmapType,
-                                     (ppdev->ScreenDelta > 0) ? BMF_TOPDOWN : 0,
-                                     ppdev->ScreenPtr);
-   if (hSurface == NULL)
-   {
-      return FALSE;
-   }
-
-   /* Which api we hooking to */
-   ppdev->dwHooks = HOOK_BITBLT | HOOK_COPYBITS | HOOK_FILLPATH | HOOK_TEXTOUT | HOOK_STROKEPATH | HOOK_LINETO ;
-
-   /*
-    * Associate the surface with our device.
-    */
-
-                
-   if (!EngAssociateSurface(hSurface, ppdev->hDevEng, ppdev->dwHooks))
-   {
-      EngDeleteSurface(hSurface);
-      return FALSE;
-   }
-
-   ppdev->hSurfEng = hSurface;
-
-   return hSurface;
-}
-
-/*
- * DrvDisableSurface
- *
- * Used by GDI to notify a driver that the surface created by DrvEnableSurface
- * for the current device is no longer needed.
- *
- * Status
- *    @implemented
- */
-
-VOID APIENTRY
-DrvDisableSurface(
-   IN DHPDEV dhpdev)
-{
-   DWORD ulTemp;
-   VIDEO_MEMORY VideoMemory;
-   PPDEV ppdev = (PPDEV)dhpdev;
-
-   EngDeleteSurface(ppdev->hSurfEng);
-   ppdev->hSurfEng = NULL;
-
-
-   /* Free the video memory cache */
-   if (ppdev->pVideoMemCache)
-   {
-        EngFreeMem(ppdev->pVideoMemCache);
-   }
-
-   /*
-    * Unmap the framebuffer.
-    */
-
-   VideoMemory.RequestedVirtualAddress = ppdev->pRealVideoMem;
-   EngDeviceIoControl(((PPDEV)dhpdev)->hDriver, IOCTL_VIDEO_UNMAP_VIDEO_MEMORY,
-                      &VideoMemory, sizeof(VIDEO_MEMORY), NULL, 0, &ulTemp);
-
-   ppdev->pRealVideoMem  = NULL;
-   ppdev->pVideoMemCache = NULL;
-
-}
-
-/*
- * DrvAssertMode
- *
- * Sets the mode of the specified physical device to either the mode specified
- * when the PDEV was initialized or to the default mode of the hardware.
- *
- * Status
- *    @implemented
- */
-
-BOOL APIENTRY
-DrvAssertMode(
-   IN DHPDEV dhpdev,
-   IN BOOL bEnable)
-{
-   PPDEV ppdev = (PPDEV)dhpdev;
-   ULONG ulTemp;
-   BOOLEAN Result = TRUE;
-
-   if (bEnable)
-   {
-      PVOID pRealVideoMem = ppdev->pRealVideoMem;
-
-      /* Setup surface and remapping if it need it */
-      if (!InitSurface(ppdev, FALSE))
-      {
-            Result = FALSE;
-      }
-      else
-      {
-            /* Check if we got same surface or not */
-            if (pRealVideoMem != ppdev->pRealVideoMem)
-            {
-                PVOID pVideoMem= NULL;
-
-                if (ppdev->pVideoMemCache == NULL)
-                {
-                    pVideoMem = ppdev->pRealVideoMem;
-                }
-                else
-                {
-                    pVideoMem = ppdev->pVideoMemCache;
-                }
-
-                Result = !EngModifySurface(ppdev->hSurfEng, ppdev->hDevEng,
-                                           ppdev->dwHooks | HOOK_SYNCHRONIZE,
-                                           0, (DHSURF)ppdev, pVideoMem,
-                                           ppdev->ScreenDelta, NULL);
-            }
-
-            /* if the pRealVideoMem == ppdev->pRealVideoMem are 
-             * the Result is then TRUE
-             */
-      }
-
-   }
-   else
-   {
-      /*
-       * Call the miniport driver to reset the device to a known state.
-       */
-
-      Result = !EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_RESET_DEVICE,
-                                 NULL, 0, NULL, 0, &ulTemp);
-   }
-
-   return Result;
-}