Update native with gl shutdown fix (helps orientation change).

This also adds some logging that helped me figure things out.
This commit is contained in:
Henrik Rydgård 2013-10-09 16:08:36 +02:00
parent 8489bd15db
commit 39d28c27e2
5 changed files with 21 additions and 11 deletions

View file

@ -167,20 +167,25 @@ void FramebufferManager::SetNumExtraFBOs(int num) {
void FramebufferManager::CompileDraw2DProgram() { void FramebufferManager::CompileDraw2DProgram() {
if (!draw2dprogram_) { if (!draw2dprogram_) {
SetNumExtraFBOs(0);
draw2dprogram_ = glsl_create_source(basic_vs, tex_fs); draw2dprogram_ = glsl_create_source(basic_vs, tex_fs);
glsl_bind(draw2dprogram_); glsl_bind(draw2dprogram_);
glUniform1i(draw2dprogram_->sampler0, 0); glUniform1i(draw2dprogram_->sampler0, 0);
SetNumExtraFBOs(0);
if (g_Config.bFXAA) { if (g_Config.bFXAA) {
useFXAA_ = true; useFXAA_ = true;
fxaaProgram_ = glsl_create("shaders/fxaa.vsh", "shaders/fxaa.fsh"); fxaaProgram_ = glsl_create("shaders/fxaa.vsh", "shaders/fxaa.fsh");
glsl_bind(fxaaProgram_); if (!fxaaProgram_) {
glUniform1i(fxaaProgram_->sampler0, 0); ERROR_LOG(G3D, "Failed to build FXAA program");
SetNumExtraFBOs(1); useFXAA_ = false;
float u_delta = 1.0f / PSP_CoreParameter().renderWidth; } else {
float v_delta = 1.0f / PSP_CoreParameter().renderHeight; glsl_bind(fxaaProgram_);
glUniform2f(glsl_uniform_loc(fxaaProgram_, "u_texcoordDelta"), u_delta, v_delta); glUniform1i(fxaaProgram_->sampler0, 0);
SetNumExtraFBOs(1);
float u_delta = 1.0f / PSP_CoreParameter().renderWidth;
float v_delta = 1.0f / PSP_CoreParameter().renderHeight;
glUniform2f(glsl_uniform_loc(fxaaProgram_, "u_texcoordDelta"), u_delta, v_delta);
}
} else { } else {
fxaaProgram_ = 0; fxaaProgram_ = 0;
useFXAA_ = false; useFXAA_ = false;
@ -194,6 +199,8 @@ void FramebufferManager::DestroyDraw2DProgram() {
if (draw2dprogram_) { if (draw2dprogram_) {
glsl_destroy(draw2dprogram_); glsl_destroy(draw2dprogram_);
draw2dprogram_ = 0; draw2dprogram_ = 0;
}
if (fxaaProgram_) {
glsl_destroy(fxaaProgram_); glsl_destroy(fxaaProgram_);
fxaaProgram_ = 0; fxaaProgram_ = 0;
} }

View file

@ -481,10 +481,12 @@ void GLES_GPU::BuildReportingInfo() {
} }
void GLES_GPU::DeviceLost() { void GLES_GPU::DeviceLost() {
ILOG("GLES_GPU: DeviceLost");
// Should only be executed on the GL thread. // Should only be executed on the GL thread.
// Simply drop all caches and textures. // Simply drop all caches and textures.
// FBOs appear to survive? Or no? // FBOs appear to survive? Or no?
// TransformDraw has registered as a GfxResourceHolder.
shaderManager_->ClearCache(false); shaderManager_->ClearCache(false);
textureCache_.Clear(false); textureCache_.Clear(false);
framebufferManager_.DeviceLost(); framebufferManager_.DeviceLost();

View file

@ -31,8 +31,7 @@
class ShaderManager; class ShaderManager;
class LinkedShader; class LinkedShader;
class GLES_GPU : public GPUCommon class GLES_GPU : public GPUCommon {
{
public: public:
GLES_GPU(); GLES_GPU();
~GLES_GPU(); ~GLES_GPU();

View file

@ -63,6 +63,7 @@
// all at once, writing matrix indices into the vertices in addition to the weights, and then doing a single // all at once, writing matrix indices into the vertices in addition to the weights, and then doing a single
// draw call with specially generated shader to draw the whole mesh. This code will be seriously complex though. // draw call with specially generated shader to draw the whole mesh. This code will be seriously complex though.
#include "base/logging.h"
#include "base/timeutil.h" #include "base/timeutil.h"
#include "Common/MemoryUtil.h" #include "Common/MemoryUtil.h"
@ -186,6 +187,7 @@ void TransformDrawEngine::DestroyDeviceObjects() {
} }
void TransformDrawEngine::GLLost() { void TransformDrawEngine::GLLost() {
ILOG("TransformDrawEngine::GLLost()");
// The objects have already been deleted. // The objects have already been deleted.
memset(vbo_, 0, sizeof(vbo_)); memset(vbo_, 0, sizeof(vbo_));
memset(ebo_, 0, sizeof(ebo_)); memset(ebo_, 0, sizeof(ebo_));

2
native

@ -1 +1 @@
Subproject commit 3778d8d8b1c3cc66470f1575b9959a04812b8f3f Subproject commit 67bea6c7ed9eba715d42164944c70ba5a2838223