Config: Add "maxTextureSize" entry to artificially limit texture sizes

This commit is contained in:
Jonas Kulla 2017-04-23 12:28:34 +02:00
parent 06feafe9ef
commit 1478e1e0f9
6 changed files with 22 additions and 2 deletions

View File

@ -124,6 +124,17 @@
# subImageFix=false # subImageFix=false
# Limit the maximum size (width, height) of
# most textures mkxp will create (exceptions are
# rendering backbuffers and similar).
# If set to 0, the hardware maximum is used.
# This is useful for recording traces that can
# be played back on machines with lower specs.
# (default: 0)
#
# maxTextureSize=0
# Set the base path of the game to '/path/to/game' # Set the base path of the game to '/path/to/game'
# (default: executable directory) # (default: executable directory)
# #

View File

@ -166,6 +166,7 @@ void Config::read(int argc, char *argv[])
PO_DESC(syncToRefreshrate, bool, false) \ PO_DESC(syncToRefreshrate, bool, false) \
PO_DESC(solidFonts, bool, false) \ PO_DESC(solidFonts, bool, false) \
PO_DESC(subImageFix, bool, false) \ PO_DESC(subImageFix, bool, false) \
PO_DESC(maxTextureSize, int, 0) \
PO_DESC(gameFolder, std::string, ".") \ PO_DESC(gameFolder, std::string, ".") \
PO_DESC(anyAltToggleFS, bool, false) \ PO_DESC(anyAltToggleFS, bool, false) \
PO_DESC(enableReset, bool, true) \ PO_DESC(enableReset, bool, true) \

View File

@ -49,6 +49,7 @@ struct Config
bool solidFonts; bool solidFonts;
bool subImageFix; bool subImageFix;
int maxTextureSize;
std::string gameFolder; std::string gameFolder;
bool anyAltToggleFS; bool anyAltToggleFS;

View File

@ -23,6 +23,7 @@
#include "shader.h" #include "shader.h"
#include "etc.h" #include "etc.h"
#include "gl-fun.h" #include "gl-fun.h"
#include "config.h"
#include <SDL_rect.h> #include <SDL_rect.h>
@ -111,7 +112,7 @@ GLState::Caps::Caps()
gl.GetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); gl.GetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize);
} }
GLState::GLState() GLState::GLState(const Config &conf)
{ {
gl.Disable(GL_DEPTH_TEST); gl.Disable(GL_DEPTH_TEST);
@ -121,4 +122,7 @@ GLState::GLState()
scissorTest.init(false); scissorTest.init(false);
scissorBox.init(IntRect(0, 0, 640, 480)); scissorBox.init(IntRect(0, 0, 640, 480));
program.init(0); program.init(0);
if (conf.maxTextureSize > 0)
caps.maxTexSize = conf.maxTextureSize;
} }

View File

@ -27,6 +27,8 @@
#include <stack> #include <stack>
#include <assert.h> #include <assert.h>
struct Config;
template<typename T> template<typename T>
struct GLProperty struct GLProperty
{ {
@ -130,7 +132,7 @@ public:
} caps; } caps;
GLState(); GLState(const Config &conf);
}; };
#endif // GLSTATE_H #endif // GLSTATE_H

View File

@ -109,6 +109,7 @@ struct SharedStatePrivate
graphics(threadData), graphics(threadData),
input(*threadData), input(*threadData),
audio(*threadData), audio(*threadData),
_glState(threadData->config),
fontState(threadData->config), fontState(threadData->config),
stampCounter(0) stampCounter(0)
{ {