diff --git a/src/gui/render.cpp b/src/gui/render.cpp index 52d36120..69fe644a 100644 --- a/src/gui/render.cpp +++ b/src/gui/render.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: render.cpp,v 1.41 2006-02-12 23:43:54 harekiet Exp $ */ +/* $Id: render.cpp,v 1.42 2006-02-13 08:22:17 harekiet Exp $ */ #include #include @@ -278,8 +278,26 @@ forcenormal: xscale = simpleBlock->xscale; yscale = simpleBlock->yscale; } - if (render.src.bpp != 8) - gfx_flags |= GFX_RGBONLY; + switch (render.src.bpp) { + case 8: + if (gfx_flags & GFX_CAN_8) + gfx_flags |= GFX_LOVE_8; + else + gfx_flags |= GFX_LOVE_32; + break; + case 15: + gfx_flags |= GFX_LOVE_15; + gfx_flags = (gfx_flags & ~GFX_CAN_8) | GFX_RGBONLY; + break; + case 16: + gfx_flags |= GFX_LOVE_16; + gfx_flags = (gfx_flags & ~GFX_CAN_8) | GFX_RGBONLY; + break; + case 32: + gfx_flags |= GFX_LOVE_32; + gfx_flags = (gfx_flags & ~GFX_CAN_8) | GFX_RGBONLY; + break; + } gfx_flags=GFX_GetBestMode(gfx_flags); if (!gfx_flags) { if (!complexBlock && simpleBlock == &ScaleNormal1x) @@ -287,7 +305,6 @@ forcenormal: else goto forcenormal; } - /* Special test for normal2x to switch to normal with hardware scaling */ width *= xscale; if (gfx_flags & GFX_SCALING) { height = MakeAspectTable(render.src.height, yscale, yscale ); diff --git a/src/gui/render_scalers.cpp b/src/gui/render_scalers.cpp index 826b16c0..28f44864 100644 --- a/src/gui/render_scalers.cpp +++ b/src/gui/render_scalers.cpp @@ -158,7 +158,7 @@ ScalerLineBlock_t ScalerCache = { }; ScalerSimpleBlock_t ScaleNormal1x = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 1,1, Normal1x_8_8_L, Normal1x_8_15_L, Normal1x_8_16_L, Normal1x_8_32_L, 0, Normal1x_15_15_L, Normal1x_15_16_L, Normal1x_15_32_L, @@ -173,7 +173,7 @@ ScalerSimpleBlock_t ScaleNormal1x = { }; ScalerSimpleBlock_t ScaleNormalDw = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 2,1, NormalDw_8_8_L, NormalDw_8_15_L, NormalDw_8_16_L, NormalDw_8_32_L, 0, NormalDw_15_15_L, NormalDw_15_16_L, NormalDw_15_32_L, @@ -188,7 +188,7 @@ ScalerSimpleBlock_t ScaleNormalDw = { }; ScalerSimpleBlock_t ScaleNormalDh = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 1,2, NormalDh_8_8_L, NormalDh_8_15_L, NormalDh_8_16_L, NormalDh_8_32_L, 0, NormalDh_15_15_L, NormalDh_15_16_L, NormalDh_15_32_L, @@ -203,7 +203,7 @@ ScalerSimpleBlock_t ScaleNormalDh = { }; ScalerSimpleBlock_t ScaleNormal2x = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 2,2, Normal2x_8_8_L, Normal2x_8_15_L, Normal2x_8_16_L, Normal2x_8_32_L, 0, Normal2x_15_15_L, Normal2x_15_16_L, Normal2x_15_32_L, @@ -218,7 +218,7 @@ ScalerSimpleBlock_t ScaleNormal2x = { }; ScalerSimpleBlock_t ScaleNormal3x = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 3,3, Normal3x_8_8_L, Normal3x_8_15_L, Normal3x_8_16_L, Normal3x_8_32_L, 0, Normal3x_15_15_L, Normal3x_15_16_L, Normal3x_15_32_L, @@ -233,7 +233,7 @@ ScalerSimpleBlock_t ScaleNormal3x = { }; ScalerSimpleBlock_t ScaleTV2x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 2,2, 0, TV2x_8_15_L, TV2x_8_16_L, TV2x_8_32_L, 0, TV2x_15_15_L, TV2x_15_16_L, TV2x_15_32_L, @@ -248,7 +248,7 @@ ScalerSimpleBlock_t ScaleTV2x = { }; ScalerSimpleBlock_t ScaleTV3x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 3,3, 0, TV3x_8_15_L, TV3x_8_16_L, TV3x_8_32_L, 0, TV3x_15_15_L, TV3x_15_16_L, TV3x_15_32_L, @@ -263,7 +263,7 @@ ScalerSimpleBlock_t ScaleTV3x = { }; ScalerSimpleBlock_t ScaleScan2x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 2,2, 0, Scan2x_8_15_L, Scan2x_8_16_L, Scan2x_8_32_L, 0, Scan2x_15_15_L, Scan2x_15_16_L, Scan2x_15_32_L, @@ -278,7 +278,7 @@ ScalerSimpleBlock_t ScaleScan2x = { }; ScalerSimpleBlock_t ScaleScan3x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 3,3, 0, Scan3x_8_15_L, Scan3x_8_16_L, Scan3x_8_32_L, 0, Scan3x_15_15_L, Scan3x_15_16_L, Scan3x_15_32_L, @@ -293,7 +293,7 @@ ScalerSimpleBlock_t ScaleScan3x = { }; ScalerSimpleBlock_t ScaleRGB2x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 2,2, 0, RGB2x_8_15_L, RGB2x_8_16_L, RGB2x_8_32_L, 0, RGB2x_15_15_L, RGB2x_15_16_L, RGB2x_15_32_L, @@ -308,7 +308,7 @@ ScalerSimpleBlock_t ScaleRGB2x = { }; ScalerSimpleBlock_t ScaleRGB3x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 3,3, 0, RGB3x_8_15_L, RGB3x_8_16_L, RGB3x_8_32_L, 0, RGB3x_15_15_L, RGB3x_15_16_L, RGB3x_15_32_L, @@ -326,14 +326,14 @@ ScalerSimpleBlock_t ScaleRGB3x = { /* Complex scalers */ ScalerComplexBlock_t ScaleAdvMame2x ={ - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 2,2, AdvMame2x_8_L,AdvMame2x_16_L,AdvMame2x_16_L,AdvMame2x_32_L, AdvMame2x_8_R,AdvMame2x_16_R,AdvMame2x_16_R,AdvMame2x_32_R }; ScalerComplexBlock_t ScaleAdvMame3x = { - GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_8, + GFX_CAN_8|GFX_CAN_15|GFX_CAN_16|GFX_CAN_32, 3,3, AdvMame3x_8_L,AdvMame3x_16_L,AdvMame3x_16_L,AdvMame3x_32_L, AdvMame3x_8_R,AdvMame3x_16_R,AdvMame3x_16_R,AdvMame3x_32_R @@ -341,14 +341,14 @@ ScalerComplexBlock_t ScaleAdvMame3x = { /* These need specific 15bpp versions */ ScalerComplexBlock_t ScaleAdvInterp2x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 2,2, 0,AdvInterp2x_15_L,AdvInterp2x_16_L,AdvInterp2x_32_L, 0,AdvInterp2x_15_R,AdvInterp2x_16_R,AdvInterp2x_32_R }; ScalerComplexBlock_t ScaleAdvInterp3x = { - GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_LOVE_32|GFX_RGBONLY, + GFX_CAN_15|GFX_CAN_16|GFX_CAN_32|GFX_RGBONLY, 3,3, 0,AdvInterp3x_15_L,AdvInterp3x_16_L,AdvInterp3x_32_L, 0,AdvInterp3x_15_R,AdvInterp3x_16_R,AdvInterp3x_32_R