mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-20 17:59:08 +02:00
Don't allow wrapping on framebuffer textures. Fixes GTA on old NV Shield
This commit is contained in:
1 parent
d72d710714
commit
6858c77612
6 files changed
+19
-17
No files matched your search
@@ -109,7 +109,7 @@ void DrawEngineGLES::DeviceRestore() {
|
||||
|
||||
void DrawEngineGLES::InitDeviceObjects() {
|
||||
for (int i = 0; i < GLRenderManager::MAX_INFLIGHT_FRAMES; i++) {
|
||||
frameData_[i].pushVertex = new GLPushBuffer(render_, GL_ARRAY_BUFFER, 256 * 1024);
|
||||
frameData_[i].pushVertex = new GLPushBuffer(render_, GL_ARRAY_BUFFER, 1024 * 1024);
|
||||
frameData_[i].pushIndex = new GLPushBuffer(render_, GL_ELEMENT_ARRAY_BUFFER, 256 * 1024);
|
||||
|
||||
render_->RegisterPushBuffer(i, frameData_[i].pushVertex);
|
||||
|
||||
@@ -79,8 +79,6 @@ LinkedShader::LinkedShader(GLRenderManager *render, VShaderID VSID, Shader *vs,
|
||||
semantics.push_back({ ATTR_POSITION, "position" });
|
||||
semantics.push_back({ ATTR_TEXCOORD, "texcoord" });
|
||||
semantics.push_back({ ATTR_NORMAL, "normal" });
|
||||
semantics.push_back({ ATTR_W1, "w1" });
|
||||
semantics.push_back({ ATTR_W2, "w2" });
|
||||
semantics.push_back({ ATTR_COLOR0, "color0" });
|
||||
semantics.push_back({ ATTR_COLOR1, "color1" });
|
||||
|
||||
|
||||
@@ -34,10 +34,8 @@ enum {
|
||||
ATTR_POSITION = 0,
|
||||
ATTR_TEXCOORD = 1,
|
||||
ATTR_NORMAL = 2,
|
||||
ATTR_W1 = 3,
|
||||
ATTR_W2 = 4,
|
||||
ATTR_COLOR0 = 5,
|
||||
ATTR_COLOR1 = 6,
|
||||
ATTR_COLOR0 = 3,
|
||||
ATTR_COLOR1 = 4,
|
||||
|
||||
ATTR_COUNT,
|
||||
};
|
||||
|
||||
+2
-1
@@ -120,7 +120,8 @@ UI::EventReturn DevMenu::OnJitCompare(UI::EventParams &e) {
|
||||
|
||||
UI::EventReturn DevMenu::OnShaderView(UI::EventParams &e) {
|
||||
UpdateUIState(UISTATE_PAUSEMENU);
|
||||
screenManager()->push(new ShaderListScreen());
|
||||
if (gpu) // Avoid crashing if chosen while the game is being loaded.
|
||||
screenManager()->push(new ShaderListScreen());
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -326,10 +326,12 @@ void GLQueueRunner::InitCreateFramebuffer(const GLRInitStep &step) {
|
||||
fbo->color_texture.wrapT = GL_CLAMP_TO_EDGE;
|
||||
fbo->color_texture.magFilter = GL_LINEAR;
|
||||
fbo->color_texture.minFilter = GL_LINEAR;
|
||||
fbo->color_texture.canWrap = false;
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, fbo->color_texture.wrapS);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, fbo->color_texture.wrapT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, fbo->color_texture.magFilter);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, fbo->color_texture.minFilter);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
|
||||
|
||||
if (gl_extensions.IsGLES) {
|
||||
if (gl_extensions.OES_packed_depth_stencil) {
|
||||
@@ -846,13 +848,15 @@ void GLQueueRunner::PerformRenderPass(const GLRStep &step) {
|
||||
if (!tex) {
|
||||
break;
|
||||
}
|
||||
if (tex->wrapS != c.textureSampler.wrapS) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, c.textureSampler.wrapS);
|
||||
tex->wrapS = c.textureSampler.wrapS;
|
||||
}
|
||||
if (tex->wrapT != c.textureSampler.wrapT) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, c.textureSampler.wrapT);
|
||||
tex->wrapT = c.textureSampler.wrapT;
|
||||
if (tex->canWrap) {
|
||||
if (tex->wrapS != c.textureSampler.wrapS) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, c.textureSampler.wrapS);
|
||||
tex->wrapS = c.textureSampler.wrapS;
|
||||
}
|
||||
if (tex->wrapT != c.textureSampler.wrapT) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, c.textureSampler.wrapT);
|
||||
tex->wrapT = c.textureSampler.wrapT;
|
||||
}
|
||||
}
|
||||
if (tex->magFilter != c.textureSampler.magFilter) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, c.textureSampler.magFilter);
|
||||
|
||||
@@ -33,9 +33,10 @@ public:
|
||||
GLenum wrapT = 0xFFFF;
|
||||
GLenum magFilter = 0xFFFF;
|
||||
GLenum minFilter = 0xFFFF;
|
||||
bool canWrap = true;
|
||||
float anisotropy = -100000.0f;
|
||||
float minLod = -100000.0f;
|
||||
float maxLod = 100000.0f;
|
||||
float minLod = -1000.0f;
|
||||
float maxLod = 1000.0f;
|
||||
float lodBias = 0.0f;
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user