Add Auto-texture scaling

Update resource.h

Update WndMainWindow.h

Update WndMainWindow.cpp

Update ppsspp.rc

position fix

Update TextureCache.cpp

Update TextureCache.cpp
This commit is contained in:
danyalzia 2013-10-11 11:49:45 +05:00 committed by DanyalZia
parent 03735c13b2
commit 88c36b5b25
5 changed files with 20 additions and 6 deletions

View File

@ -1437,7 +1437,12 @@ void TextureCache::LoadTextureLevel(TexCacheEntry &entry, int level, bool replac
glPixelStorei(GL_UNPACK_ALIGNMENT, texByteAlign); glPixelStorei(GL_UNPACK_ALIGNMENT, texByteAlign);
glPixelStorei(GL_PACK_ALIGNMENT, texByteAlign); glPixelStorei(GL_PACK_ALIGNMENT, texByteAlign);
int scaleFactor = g_Config.iTexScalingLevel; int scaleFactor;
//Auto-texture scale upto 5x rendering resolution
if (g_Config.iTexScalingLevel == 0)
scaleFactor = std::min(5, g_Config.iInternalResolution);
else
scaleFactor = g_Config.iTexScalingLevel;
// Don't scale the PPGe texture. // Don't scale the PPGe texture.
if (entry.addr > 0x05000000 && entry.addr < 0x08800000) if (entry.addr > 0x05000000 && entry.addr < 0x08800000)

View File

@ -237,6 +237,9 @@ namespace MainWindow
if (++g_Config.iInternalResolution > RESOLUTION_MAX) if (++g_Config.iInternalResolution > RESOLUTION_MAX)
g_Config.iInternalResolution = 0; g_Config.iInternalResolution = 0;
} }
if (g_Config.iTexScalingLevel == TEXSCALING_AUTO)
setTexScalingMultiplier(0);
ResizeDisplay(true, true); ResizeDisplay(true, true);
} }
@ -1211,7 +1214,8 @@ namespace MainWindow
if (gpu) if (gpu)
gpu->Resized(); gpu->Resized();
break; break;
case ID_TEXTURESCALING_AUTO: setTexScalingMultiplier(TEXSCALING_AUTO); break;
case ID_TEXTURESCALING_OFF: setTexScalingMultiplier(TEXSCALING_OFF); break; case ID_TEXTURESCALING_OFF: setTexScalingMultiplier(TEXSCALING_OFF); break;
case ID_TEXTURESCALING_2X: setTexScalingMultiplier(TEXSCALING_2X); break; case ID_TEXTURESCALING_2X: setTexScalingMultiplier(TEXSCALING_2X); break;
case ID_TEXTURESCALING_3X: setTexScalingMultiplier(TEXSCALING_3X); break; case ID_TEXTURESCALING_3X: setTexScalingMultiplier(TEXSCALING_3X); break;
@ -1640,20 +1644,21 @@ namespace MainWindow
} }
static const int texscalingitems[] = { static const int texscalingitems[] = {
ID_TEXTURESCALING_AUTO,
ID_TEXTURESCALING_OFF, ID_TEXTURESCALING_OFF,
ID_TEXTURESCALING_2X, ID_TEXTURESCALING_2X,
ID_TEXTURESCALING_3X, ID_TEXTURESCALING_3X,
ID_TEXTURESCALING_4X, ID_TEXTURESCALING_4X,
ID_TEXTURESCALING_5X, ID_TEXTURESCALING_5X,
}; };
if(g_Config.iTexScalingLevel < TEXSCALING_OFF) if(g_Config.iTexScalingLevel < TEXSCALING_AUTO)
g_Config.iTexScalingLevel = TEXSCALING_OFF; g_Config.iTexScalingLevel = TEXSCALING_AUTO;
else if(g_Config.iTexScalingLevel > TEXSCALING_MAX) else if(g_Config.iTexScalingLevel > TEXSCALING_MAX)
g_Config.iTexScalingLevel = TEXSCALING_MAX; g_Config.iTexScalingLevel = TEXSCALING_MAX;
for (int i = 0; i < ARRAY_SIZE(texscalingitems); i++) { for (int i = 0; i < ARRAY_SIZE(texscalingitems); i++) {
CheckMenuItem(menu, texscalingitems[i], MF_BYCOMMAND | ((i == g_Config.iTexScalingLevel - 1) ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(menu, texscalingitems[i], MF_BYCOMMAND | ((i == g_Config.iTexScalingLevel) ? MF_CHECKED : MF_UNCHECKED));
} }
static const int texscalingtypeitems[] = { static const int texscalingtypeitems[] = {

View File

@ -39,7 +39,8 @@ namespace MainWindow
RESOLUTION_8X = 8, RESOLUTION_8X = 8,
RESOLUTION_9X = 9, RESOLUTION_9X = 9,
RESOLUTION_MAX = 10, RESOLUTION_MAX = 10,
TEXSCALING_AUTO = 0,
TEXSCALING_OFF = 1, TEXSCALING_OFF = 1,
TEXSCALING_2X = 2, TEXSCALING_2X = 2,
TEXSCALING_3X = 3, TEXSCALING_3X = 3,
@ -65,4 +66,5 @@ namespace MainWindow
void _ViewFullScreen(HWND hWnd); void _ViewFullScreen(HWND hWnd);
void _ViewNormal(HWND hWnd); void _ViewNormal(HWND hWnd);
void TranslateMenus(); void TranslateMenus();
void setTexScalingMultiplier(int level);
} }

View File

@ -472,6 +472,7 @@ BEGIN
POPUP "Texture Scaling" POPUP "Texture Scaling"
BEGIN BEGIN
MENUITEM "Off", ID_TEXTURESCALING_OFF MENUITEM "Off", ID_TEXTURESCALING_OFF
MENUITEM "Auto", ID_TEXTURESCALING_AUTO
MENUITEM "&2x", ID_TEXTURESCALING_2X MENUITEM "&2x", ID_TEXTURESCALING_2X
MENUITEM "&3x", ID_TEXTURESCALING_3X MENUITEM "&3x", ID_TEXTURESCALING_3X
MENUITEM "&4x", ID_TEXTURESCALING_4X MENUITEM "&4x", ID_TEXTURESCALING_4X

View File

@ -293,6 +293,7 @@
#define IDC_GEDBG_STEPTEX 40133 #define IDC_GEDBG_STEPTEX 40133
#define IDC_GEDBG_STEPFRAME 40134 #define IDC_GEDBG_STEPFRAME 40134
#define IDC_GEDBG_BREAKTEX 40135 #define IDC_GEDBG_BREAKTEX 40135
#define ID_TEXTURESCALING_AUTO 40136
// Dummy option to let the buffered rendering hotkey cycle through all the options. // Dummy option to let the buffered rendering hotkey cycle through all the options.
#define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500 #define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500