Handle the gfx loving based on the source bpp
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2496
This commit is contained in:
parent
df62fa5c20
commit
c7f66d9a40
2 changed files with 36 additions and 19 deletions
|
@ -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 <sys/types.h>
|
||||
#include <dirent.h>
|
||||
|
@ -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 );
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue