Sync with d1x
authorBradley Bell <btb@icculus.org>
Wed, 31 Oct 2001 09:57:59 +0000 (09:57 +0000)
committerBradley Bell <btb@icculus.org>
Wed, 31 Oct 2001 09:57:59 +0000 (09:57 +0000)
2d/bitblt.c
2d/canvas.c
2d/linear.h
2d/scalea.h

index d455821..ad8faba 100644 (file)
@@ -946,6 +946,12 @@ void show_fullscr(grs_bitmap *bm)
 {
        grs_bitmap * const scr = &grd_curcanv->cv_bitmap;
 
+#ifdef OGL
+       if(bm->bm_type == BM_LINEAR && scr->bm_type == BM_OGL) {
+               ogl_ubitblt_i(scr->bm_w,scr->bm_h,0,0,bm->bm_w,bm->bm_h,0,0,bm,scr);//use opengl to scale, faster and saves ram. -MPM
+               return;
+       }
+#endif
        if(scr->bm_type != BM_LINEAR) {
                grs_bitmap *tmp = gr_create_bitmap(scr->bm_w, scr->bm_h);
                gr_bitmap_scale_to(bm, tmp);
index fc11795..7a6aabf 100644 (file)
@@ -16,7 +16,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
 #endif
 
 #include <stdlib.h>
-//#include <d_malloc.h>
 #include <stdio.h>
 
 #include "u_mem.h"
index 0650391..0a168c2 100644 (file)
@@ -280,6 +280,7 @@ static inline void modex_copy_column(ubyte * src, ubyte * dest, int num_pixels,
 
 static inline void modex_copy_column_m(ubyte * src, ubyte * dest, int num_pixels, int src_rowsize, int dest_rowsize ) {
 /* #pragma aux modex_copy_column_m parm [esi] [edi] [ecx] [ebx] [edx] modify exact [ecx esi edi] = */
+ int dummy[3];
  __asm__ __volatile__ (
 "0: ;"
     "movb    (%%esi), %%al;"
@@ -291,12 +292,14 @@ static inline void modex_copy_column_m(ubyte * src, ubyte * dest, int num_pixels
     "addl   %%edx, %%edi;"
     "decl   %%ecx;"
     "jne    0b"
- : "=c" (num_pixels), "=S" (src), "=D" (dest) : "S" (src), "D" (dest), "c" (num_pixels), "b" (src_rowsize), "d" (dest_rowsize)
- :      "%eax");
+ : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
+ : "1" (src), "2" (dest), "0" (num_pixels), "b" (src_rowsize), "d" (dest_rowsize)
+ :      "%eax" );
 }
 
 static inline void modex_copy_scanline( ubyte * src, ubyte * dest, int npixels ) {
 /* #pragma aux modex_copy_scanline parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] */
+int dummy[3];
  __asm__ __volatile__ (
 "       movl %%ecx, %%ebx;"
 "       andl $3, %%ebx;"
@@ -325,12 +328,14 @@ static inline void modex_copy_scanline( ubyte * src, ubyte * dest, int npixels )
 "       decl %%ebx;"
 "       jne 2b;"
 "3:"
- : "=c" (npixels), "=S" (src), "=D" (dest): "S" (src), "D" (dest), "c" (npixels)
- :      "%eax", "%ebx", "%edx");
+ : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
+ : "1" (src), "2" (dest), "0" (npixels)
+ :      "%eax", "%ebx", "%edx" );
 }
 
 static inline void modex_copy_scanline_2x( ubyte * src, ubyte * dest, int npixels ) {
 /* #pragma aux modex_copy_scanline_2x parm [esi] [edi] [ecx] modify exact [ecx esi edi eax ebx edx] = */
+int dummy[3];
  __asm__ __volatile__ (
 "       movl %%ecx, %%ebx;"
 "       andl $3, %%ebx;"
@@ -359,8 +364,9 @@ static inline void modex_copy_scanline_2x( ubyte * src, ubyte * dest, int npixel
 "       decl %%ebx;"
 "       jne 2b;"
 "3:"
- : "=c" (npixels), "=S" (src), "=D" (dest): "S" (src), "D" (dest), "c" (npixels)
- :      "%eax", "%ebx", "%edx");
+ : "=c" (dummy[0]), "=S" (dummy[1]), "=D" (dummy[2])
+ : "1" (src), "2" (dest), "0" (npixels)
+ :      "%eax", "%ebx", "%edx" );
 }
 #elif defined _MSC_VER
 
index 0b6168b..7cd6e34 100644 (file)
@@ -55,10 +55,12 @@ void rep_movsb( ubyte * sbits, ubyte * dbits, int width );
 
 #else
 static inline void rep_stosb(char *ScreenPtr, int RunLength, int Color) {
+   int dummy[2];
    __asm__ __volatile__ ("cld; rep; stosb"
-    : : "D" (ScreenPtr), "c" (RunLength), "a" (Color) : "%ecx", "%edi");
+    : "=c" (dummy[0]), "=D" (dummy[1]) : "1" (ScreenPtr), "0" (RunLength), "a" (Color) );
 }
 static inline void scale_row_asm_transparent( ubyte * sbits, ubyte * dbits, int width, fix u, fix du ) {
+   int dummy[3];
    __asm__ __volatile__ (
 "0:           movl %%ebx, %%eax;"
 "             shrl $16, %%eax;"
@@ -70,8 +72,9 @@ static inline void scale_row_asm_transparent( ubyte * sbits, ubyte * dbits, int
 "             incl %%edi;"
 "             decl %%ecx;"
 "             jne 0b"
- : : "S" (sbits), "D" (dbits), "c" (width), "b" (u), "d" (du)
- : "%eax", "%ebx", "%ecx", "%edi");
+ : "=c" (dummy[0]), "=b" (dummy[1]), "=D" (dummy[2])
+ : "S" (sbits), "2" (dbits), "0" (width), "1" (u), "d" (du)
+ : "%eax");
 }
 
 static inline void scale_row_asm( ubyte * sbits, ubyte * dbits, int width, fix u, fix du ) {