From 0445b3fce2c6a51025e8c3c30775c3060709beec Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Wed, 31 Oct 2001 09:57:59 +0000 Subject: [PATCH] Sync with d1x --- 2d/bitblt.c | 6 ++++++ 2d/canvas.c | 1 - 2d/linear.h | 18 ++++++++++++------ 2d/scalea.h | 9 ++++++--- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/2d/bitblt.c b/2d/bitblt.c index d4558216..ad8faba0 100644 --- a/2d/bitblt.c +++ b/2d/bitblt.c @@ -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); diff --git a/2d/canvas.c b/2d/canvas.c index fc117954..7a6aabf3 100644 --- a/2d/canvas.c +++ b/2d/canvas.c @@ -16,7 +16,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #endif #include -//#include #include #include "u_mem.h" diff --git a/2d/linear.h b/2d/linear.h index 06503914..0a168c23 100644 --- a/2d/linear.h +++ b/2d/linear.h @@ -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 diff --git a/2d/scalea.h b/2d/scalea.h index 0b6168b4..7cd6e341 100644 --- a/2d/scalea.h +++ b/2d/scalea.h @@ -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 ) { -- 2.39.2