[ros-diffs] [greatlrd] 23732: for 24bpp 1. Remove inline asm for hline and implement a asm version of it in intel syntax. (optimzeing of this version can be done better, but it for be done for now) 2. set eorly style on file I forget.

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sun Aug 27 01:26:39 CEST 2006


Author: greatlrd
Date: Sun Aug 27 03:26:39 2006
New Revision: 23732

URL: http://svn.reactos.org/svn/reactos?rev=23732&view=rev
Log:
for 24bpp
1. Remove inline asm for hline and implement a asm version of it in intel syntax. 
   (optimzeing of this version can be done better, but it for be done for now)
2. set eorly style on file I forget. 



Added:
    trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c   (with props)
    trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s   (with props)
Modified:
    trunk/reactos/subsystems/win32/win32k/dib/dib24bpp.c
    trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c   (contents, props changed)
    trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s   (contents, props changed)
    trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s   (contents, props changed)

Modified: trunk/reactos/subsystems/win32/win32k/dib/dib24bpp.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/dib24bpp.c?rev=23732&r1=23731&r2=23732&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/dib24bpp.c (original)
+++ trunk/reactos/subsystems/win32/win32k/dib/dib24bpp.c Sun Aug 27 03:26:39 2006
@@ -38,105 +38,7 @@
   return *(PUSHORT)(addr) + (*(addr + 2) << 16);
 }
 
-VOID
-DIB_24BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
-{
-  PBYTE addr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + (x1 << 1) + x1;
-  ULONG Count = x2 - x1;
-#if !defined(_M_IX86) || defined(_MSC_VER)
-  ULONG MultiCount;
-  ULONG Fill[3];
-#endif
-
-  if (Count < 8)
-    {
-      /* For small fills, don't bother doing anything fancy */
-      while (Count--)
-        {
-          *(PUSHORT)(addr) = c;
-          addr += 2;
-          *(addr) = c >> 16;
-          addr += 1;
-        }
-    }
-  else
-    {
-      /* Align to 4-byte address */
-      while (0 != ((ULONG_PTR) addr & 0x3))
-        {
-          *(PUSHORT)(addr) = c;
-          addr += 2;
-          *(addr) = c >> 16;
-          addr += 1;
-          Count--;
-        }
-      /* If the color we need to fill with is 0ABC, then the final mem pattern
-       * (note little-endianness) would be:
-       *
-       * |C.B.A|C.B.A|C.B.A|C.B.A|   <- pixel borders
-       * |C.B.A.C|B.A.C.B|A.C.B.A|   <- ULONG borders
-       *
-       * So, taking endianness into account again, we need to fill with these
-       * ULONGs: CABC BCAB ABCA */
-#if defined(_M_IX86) && !defined(_MSC_VER)
-       /* This is about 30% faster than the generic C code below */
-       __asm__ __volatile__ (
-"      movl %1, %%ecx\n"
-"      andl $0xffffff, %%ecx\n"         /* 0ABC */
-"      movl %%ecx, %%ebx\n"             /* Construct BCAB in ebx */
-"      shrl $8, %%ebx\n"
-"      movl %%ecx, %%eax\n"
-"      shll $16, %%eax\n"
-"      orl  %%eax, %%ebx\n"
-"      movl %%ecx, %%edx\n"             /* Construct ABCA in edx */
-"      shll $8, %%edx\n"
-"      movl %%ecx, %%eax\n"
-"      shrl $16, %%eax\n"
-"      orl  %%eax, %%edx\n"
-"      movl %%ecx, %%eax\n"             /* Construct CABC in eax */
-"      shll $24, %%eax\n"
-"      orl  %%ecx, %%eax\n"
-"      movl %2, %%ecx\n"                /* Load count */
-"      shr  $2, %%ecx\n"
-"      movl %3, %%edi\n"                /* Load dest */
-"0:\n"
-"      movl %%eax, (%%edi)\n"           /* Store 4 pixels, 12 bytes */
-"      movl %%ebx, 4(%%edi)\n"
-"      movl %%edx, 8(%%edi)\n"
-"      addl $12, %%edi\n"
-"      dec  %%ecx\n"
-"      jnz  0b\n"
-"      movl %%edi, %0\n"
-  : "=m"(addr)
-  : "m"(c), "m"(Count), "m"(addr)
-  : "%eax", "%ebx", "%ecx", "%edx", "%edi");
-#else
-      c = c & 0xffffff;                /* 0ABC */
-      Fill[0] = c | (c << 24);         /* CABC */
-      Fill[1] = (c >> 8) | (c << 16);  /* BCAB */
-      Fill[2] = (c << 8) | (c >> 16);  /* ABCA */
-      MultiCount = Count / 4;
-      do
-        {
-          *(PULONG)addr = Fill[0];
-          addr += 4;
-          *(PULONG)addr = Fill[1];
-          addr += 4;
-          *(PULONG)addr = Fill[2];
-          addr += 4;
-        }
-      while (0 != --MultiCount);
-#endif
-      Count = Count & 0x03;
-      while (0 != Count--)
-        {
-          *(PUSHORT)(addr) = c;
-          addr += 2;
-          *(addr) = c >> 16;
-          addr += 1;
-        }
-    }
-}
+
 
 VOID
 DIB_24BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c)

Added: trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c?rev=23732&view=auto
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c (added)
+++ trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c Sun Aug 27 03:26:39 2006
@@ -1,0 +1,89 @@
+/*
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
+ *
+ *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id$ */
+
+#include <w32k.h>
+
+#define NDEBUG
+#include <debug.h>
+
+VOID
+DIB_24BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
+{
+  PBYTE addr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + (x1 << 1) + x1;
+  ULONG Count = x2 - x1;
+
+
+  if (Count < 8)
+    {
+      /* For small fills, don't bother doing anything fancy */
+      while (Count--)
+        {
+          *(PUSHORT)(addr) = c;
+          addr += 2;
+          *(addr) = c >> 16;
+          addr += 1;
+        }
+    }
+  else
+    {
+      /* Align to 4-byte address */
+      while (0 != ((ULONG_PTR) addr & 0x3))
+        {
+          *(PUSHORT)(addr) = c;
+          addr += 2;
+          *(addr) = c >> 16;
+          addr += 1;
+          Count--;
+        }
+      /* If the color we need to fill with is 0ABC, then the final mem pattern
+       * (note little-endianness) would be:
+       *
+       * |C.B.A|C.B.A|C.B.A|C.B.A|   <- pixel borders
+       * |C.B.A.C|B.A.C.B|A.C.B.A|   <- ULONG borders
+       *
+       * So, taking endianness into account again, we need to fill with these
+       * ULONGs: CABC BCAB ABCA */
+
+      c = c & 0xffffff;                /* 0ABC */
+      Fill[0] = c | (c << 24);         /* CABC */
+      Fill[1] = (c >> 8) | (c << 16);  /* BCAB */
+      Fill[2] = (c << 8) | (c >> 16);  /* ABCA */
+      MultiCount = Count / 4;
+      do
+        {
+          *(PULONG)addr = Fill[0];
+          addr += 4;
+          *(PULONG)addr = Fill[1];
+          addr += 4;
+          *(PULONG)addr = Fill[2];
+          addr += 4;
+        }
+      while (0 != --MultiCount);
+
+      Count = Count & 0x03;
+      while (0 != Count--)
+        {
+          *(PUSHORT)(addr) = c;
+          addr += 2;
+          *(addr) = c >> 16;
+          addr += 1;
+        }
+    }
+}

Propchange: trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/subsystems/win32/win32k/dib/dib24bppc.c
------------------------------------------------------------------------------
    svn:keywords = author date id revision

Modified: trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c?rev=23732&r1=23731&r2=23732&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c Sun Aug 27 03:26:39 2006
@@ -1,51 +1,51 @@
-/* 
- *  ReactOS W32 Subsystem
- *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
- *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id: */
-
-#include <w32k.h>
-
-#define NDEBUG
-#include <debug.h>
-
-VOID
-DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
-{
-  PBYTE byteaddr = (ULONG_PTR)SurfObj->pvScan0 + y * SurfObj->lDelta;  
-  PDWORD addr = (PDWORD)byteaddr + x1;		
-  LONG cx = x1;
-  while(cx < x2) 
-  {
-    *addr = (DWORD)c;
-    ++addr;
-    ++cx;
-   }	  
-}
-
-BOOLEAN 
-DIB_32BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color)
-{			 
-  ULONG DestY;	
-
-  for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++)
-  {
-    DIB_32BPP_HLine (DestSurface, DestRect->left, DestRect->right, DestY, color);
-  }
-
-  return TRUE;
+/* 
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
+ *
+ *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: */
+
+#include <w32k.h>
+
+#define NDEBUG
+#include <debug.h>
+
+VOID
+DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
+{
+  PBYTE byteaddr = (ULONG_PTR)SurfObj->pvScan0 + y * SurfObj->lDelta;  
+  PDWORD addr = (PDWORD)byteaddr + x1;		
+  LONG cx = x1;
+  while(cx < x2) 
+  {
+    *addr = (DWORD)c;
+    ++addr;
+    ++cx;
+   }	  
+}
+
+BOOLEAN 
+DIB_32BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color)
+{			 
+  ULONG DestY;	
+
+  for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++)
+  {
+    DIB_32BPP_HLine (DestSurface, DestRect->left, DestRect->right, DestY, color);
+  }
+
+  return TRUE;
 }

Propchange: trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/subsystems/win32/win32k/dib/dib32bppc.c
------------------------------------------------------------------------------
    svn:keywords = author date id revision

Added: trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s?rev=23732&view=auto
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s (added)
+++ trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s Sun Aug 27 03:26:39 2006
@@ -1,0 +1,165 @@
+/* 
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
+ *
+ *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: */
+
+.globl _DIB_24BPP_HLine
+.intel_syntax noprefix
+
+.def   _DIB_24BPP_HLine;
+.scl	2;
+.type	32;
+.endef
+      _DIB_24BPP_HLine:
+                         push    edi
+                         push    esi
+                         push    ebx
+                         sub     esp, 24
+                         mov     ebx, [esp+40]
+                         mov     edi, [esp+52]
+                         mov     ecx, [esp+44]
+                         mov     eax, [ebx+36]
+                         mov     esi, [ebx+32]
+                         mov     edx, [esp+48]
+                         imul    eax, edi
+                         sub     edx, ecx
+                         mov     [esp], edx
+                         add     eax, esi
+                         lea     eax, [eax+ecx*2]
+                         add     eax, ecx
+                         cmp     edx, 7
+                         mov     esi, edx
+                         mov     [esp+4], eax
+                         ja      Align4byte
+                         lea     eax, [edx-1]                                                  
+                         mov     [esp], eax
+                         inc     eax
+                         jnz     small_fill
+                         add     esp, 24
+                         pop     ebx
+                         pop     esi
+                         pop     edi
+                         ret
+                    
+                        /* For small fills, don't bother doing anything fancy */
+               small_fill:
+                         movzx   ecx, word ptr [esp+58]
+                         mov     edx, [esp+4]
+                         mov     esi, [esp+56]
+                         lea     eax, [edx+2]
+                         mov     [esp+4], eax
+                         mov     [edx+2], cl
+                         mov     eax, [esp]
+                         inc     dword ptr [esp+4]
+                         mov     [edx], si
+                         dec     eax
+                         mov     [esp], eax
+                         inc     eax
+                         jnz     small_fill
+                         add     esp, 24
+                         pop     ebx
+                         pop     esi
+                         pop     edi
+                         ret
+                         
+               Align4byte:
+                         /* Align to 4-byte address */ 
+                         test    al, 3
+                         mov     ecx, eax
+                         jz      loop1
+                         lea     esi, [esi+0]
+                         lea     edi, [edi+0]
+                         
+           loopasmversion:
+                        /* This is about 30% faster than the generic C code below */
+                         movzx   edx, word ptr [esp+58]
+                         lea     edi, [ecx+2]
+                         mov     eax, [esp+56]
+                         mov     [esp+4], edi
+                         mov     [ecx+2], dl
+                         mov     ebx, [esp+4]
+                         mov     [ecx], ax
+                         mov     edx, [esp]
+                         inc     ebx
+                         mov     [esp+4], ebx
+                         dec     edx
+                         test    bl, 3
+                         mov     [esp], edx
+                         mov     ecx, ebx
+                         jnz     loopasmversion
+                         mov     esi, edx
+
+                   loop1:
+                         mov     ecx, [esp+56]
+                         and     ecx, 16777215
+                         mov     ebx, ecx
+                         shr     ebx, 8
+                         mov     eax, ecx
+                         shl     eax, 16
+                         or      ebx, eax
+                         mov     edx, ecx
+                         shl     edx, 8
+                         mov     eax, ecx
+                         shr     eax, 16
+                         or      edx, eax
+                         mov     eax, ecx
+                         shl     eax, 24
+                         or      eax, ecx
+                         mov     ecx, [esp]
+                         shr     ecx, 2
+                         mov     edi, [esp+4]
+                    loop2:
+                         mov     [edi], eax
+                         mov     [edi+4], ebx
+                         mov     [edi+8], edx
+                         add     edi, 12
+                         dec     ecx
+                         jnz     loop2
+                         mov     [esp+4], edi
+                         and     esi, 3
+                         lea     eax, [esi-1]
+                         mov     [esp], eax
+                         inc     eax
+                         jnz     leftoverfromthemainloop
+                         add     esp, 24
+                         pop     ebx
+                         pop     esi
+                         pop     edi
+                         ret
+
+  leftoverfromthemainloop:
+
+                        /*  Count = Count & 0x03; */
+                         mov     ecx, [esp+4]
+                         mov     ebx, [esp+56]
+                         lea     esi, [ecx+2]
+                         mov     [ecx], bx
+                         shr     ebx, 16
+                         mov     [esp+4], esi
+                         mov     [ecx+2], bl
+                         mov     eax, [esp]
+                         inc     dword ptr [esp+4]
+                         dec     eax
+                         mov     [esp], eax
+                         inc     eax
+                         jnz     leftoverfromthemainloop
+                         add     esp, 24
+                         pop     ebx
+                         pop     esi
+                         pop     edi
+                         ret

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib24bpp_hline.s
------------------------------------------------------------------------------
    svn:keywords = author date id revision

Modified: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s?rev=23732&r1=23731&r2=23732&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s (original)
+++ trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s Sun Aug 27 03:26:39 2006
@@ -1,93 +1,93 @@
-
-/* 
- *  ReactOS W32 Subsystem
- *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
- *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id: */
-  .globl _DIB_32BPP_ColorFill
-  .intel_syntax noprefix
-
-  .def   _DIB_32BPP_ColorFill;
-  .scl	2;
-  .type	32;
-  .endef
-  
-  _DIB_32BPP_ColorFill:
-                        sub     esp, 24
-                        mov     ecx, [esp+32]
-                        mov     [esp+8], ebx
-                        mov     ebx, [esp+28]
-                        mov     [esp+20], ebp
-                        mov     ebp, [esp+36]
-                        mov     [esp+12], esi
-                        mov     [esp+16], edi
-                        mov     edi, [ecx]
-                        mov     esi, [ecx+8]
-                        mov     edx, [ebx+36]
-                        sub     esi, edi
-                        mov     edi, [ecx+4]
-                        mov     eax, edi
-                        imul    eax, edx
-                        add     eax, [ebx+32]
-                        mov     ebx, [ecx]
-                        lea     eax, [eax+ebx*4]
-                        mov     [esp+4], eax
-                        mov     eax, [ecx+12]
-                        cmp     eax, edi
-                        jbe     end
-                        sub     eax, edi
-                        mov     [esp], eax
-                        lea     esi, [esi+0]
-                        
-               for_loop:
-                        mov     eax, ebp
-                        cld
-                        mov     ebx, esi
-                        mov     edi, [esp+4]
-                        test    edi, 3
-                        jnz     algin_draw
-                        mov     ecx, esi
-                        rep stosd
-                        add     [esp+4], edx
-                        dec     dword ptr [esp]
-                        jnz     for_loop
-               end:        
-                        mov     ebx, [esp+8]
-                        mov     eax, 1
-                        mov     esi, [esp+12]
-                        mov     edi, [esp+16]
-                        mov     ebp, [esp+20]
-                        add     esp, 24
-                        ret      
-                                          
-               algin_draw:
-                        stosd
-                        dec     ebx
-                        mov     ecx, ebx
-                        rol     eax, 16
-                        stosd
-                        add     [esp+4], edx
-                        dec     dword ptr [esp]
-                        jnz     for_loop
-             
-                        mov     ebx, [esp+8]
-                        mov     eax, 1
-                        mov     esi, [esp+12]
-                        mov     edi, [esp+16]
-                        mov     ebp, [esp+20]
-                        add     esp, 24
-                        ret
+
+/* 
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
+ *
+ *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: */
+  .globl _DIB_32BPP_ColorFill
+  .intel_syntax noprefix
+
+  .def   _DIB_32BPP_ColorFill;
+  .scl	2;
+  .type	32;
+  .endef
+  
+  _DIB_32BPP_ColorFill:
+                        sub     esp, 24
+                        mov     ecx, [esp+32]
+                        mov     [esp+8], ebx
+                        mov     ebx, [esp+28]
+                        mov     [esp+20], ebp
+                        mov     ebp, [esp+36]
+                        mov     [esp+12], esi
+                        mov     [esp+16], edi
+                        mov     edi, [ecx]
+                        mov     esi, [ecx+8]
+                        mov     edx, [ebx+36]
+                        sub     esi, edi
+                        mov     edi, [ecx+4]
+                        mov     eax, edi
+                        imul    eax, edx
+                        add     eax, [ebx+32]
+                        mov     ebx, [ecx]
+                        lea     eax, [eax+ebx*4]
+                        mov     [esp+4], eax
+                        mov     eax, [ecx+12]
+                        cmp     eax, edi
+                        jbe     end
+                        sub     eax, edi
+                        mov     [esp], eax
+                        lea     esi, [esi+0]
+                        
+               for_loop:
+                        mov     eax, ebp
+                        cld
+                        mov     ebx, esi
+                        mov     edi, [esp+4]
+                        test    edi, 3
+                        jnz     algin_draw
+                        mov     ecx, esi
+                        rep stosd
+                        add     [esp+4], edx
+                        dec     dword ptr [esp]
+                        jnz     for_loop
+               end:        
+                        mov     ebx, [esp+8]
+                        mov     eax, 1
+                        mov     esi, [esp+12]
+                        mov     edi, [esp+16]
+                        mov     ebp, [esp+20]
+                        add     esp, 24
+                        ret      
+                                          
+               algin_draw:
+                        stosd
+                        dec     ebx
+                        mov     ecx, ebx
+                        rol     eax, 16
+                        stosd
+                        add     [esp+4], edx
+                        dec     dword ptr [esp]
+                        jnz     for_loop
+             
+                        mov     ebx, [esp+8]
+                        mov     eax, 1
+                        mov     esi, [esp+12]
+                        mov     edi, [esp+16]
+                        mov     ebp, [esp+20]
+                        add     esp, 24
+                        ret

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_colorfill.s
------------------------------------------------------------------------------
    svn:keywords = author date id revision

Modified: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s?rev=23732&r1=23731&r2=23732&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s (original)
+++ trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s Sun Aug 27 03:26:39 2006
@@ -1,69 +1,69 @@
-/* 
- *  ReactOS W32 Subsystem
- *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
- *
- *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id: */
-
-.globl _DIB_32BPP_HLine
-.intel_syntax noprefix
-
-.def   _DIB_32BPP_HLine;
-.scl	2;
-.type	32;
-.endef
-
-_DIB_32BPP_HLine:
-                  sub     esp, 12             // rember the base is not hex it is dec
-                  mov     ecx, [esp+16]
-                  mov     [esp+4], ebx   
-                  mov     edx, [esp+20]      // edx =  LONG x1
-                  mov     [esp+8], edi    
-                  mov     edi, [esp+28]
-                  mov     eax, [ecx+36]
-                  mov     ebx, [esp+24]      // ebx =  LONG x2 
-                  imul    eax, edi
-                  mov     edi, [ecx+32]
-                  sub     ebx, edx            // cx  = (x2 - x1) ;
-                  add     eax, edi
-                  lea     edx, [eax+edx*4]    
-                  mov     [esp], edx
-                  cld
-                  mov     eax, [esp+32]      
-                  mov     edi, [esp]
-                  test    edi, 3             // Align to fullword boundary 
-                  jnz     short _save_rest
-                  mov     ecx, ebx           // Setup count of fullwords to fill 
-                  rep stosd
-                  
-                  mov     ebx, [esp+4]
-                  mov     edi, [esp+8]
-                  add     esp, 12
-                  ret
-_save_rest:
-                  stosw
-                  ror     eax, 16
-                  mov     ecx, ebx           // Setup count of fullwords to fill 
-                  dec     ecx
-                  rep stosd                  // The actual fill 
-                  shr     eax, 16
-                  stosw
-
-                  mov     ebx, [esp+4]
-                  mov     edi, [esp+8]
-                  add     esp, 12
-                  ret
-
+/* 
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 2004, 2005, 2006 ReactOS Team
+ *
+ *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: */
+
+.globl _DIB_32BPP_HLine
+.intel_syntax noprefix
+
+.def   _DIB_32BPP_HLine;
+.scl	2;
+.type	32;
+.endef
+
+_DIB_32BPP_HLine:
+                  sub     esp, 12             // rember the base is not hex it is dec
+                  mov     ecx, [esp+16]
+                  mov     [esp+4], ebx   
+                  mov     edx, [esp+20]      // edx =  LONG x1
+                  mov     [esp+8], edi    
+                  mov     edi, [esp+28]
+                  mov     eax, [ecx+36]
+                  mov     ebx, [esp+24]      // ebx =  LONG x2 
+                  imul    eax, edi
+                  mov     edi, [ecx+32]
+                  sub     ebx, edx            // cx  = (x2 - x1) ;
+                  add     eax, edi
+                  lea     edx, [eax+edx*4]    
+                  mov     [esp], edx
+                  cld
+                  mov     eax, [esp+32]      
+                  mov     edi, [esp]
+                  test    edi, 3             // Align to fullword boundary 
+                  jnz     short _save_rest
+                  mov     ecx, ebx           // Setup count of fullwords to fill 
+                  rep stosd
+                  
+                  mov     ebx, [esp+4]
+                  mov     edi, [esp+8]
+                  add     esp, 12
+                  ret
+_save_rest:
+                  stosw
+                  ror     eax, 16
+                  mov     ecx, ebx           // Setup count of fullwords to fill 
+                  dec     ecx
+                  rep stosd                  // The actual fill 
+                  shr     eax, 16
+                  stosw
+
+                  mov     ebx, [esp+4]
+                  mov     edi, [esp+8]
+                  add     esp, 12
+                  ret
+

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/subsystems/win32/win32k/dib/i386/dib32bpp_hline.s
------------------------------------------------------------------------------
    svn:keywords = author date id revision




More information about the Ros-diffs mailing list