diff --git a/Info.plist b/Info.plist index 5c5a905..6200080 100644 --- a/Info.plist +++ b/Info.plist @@ -19,7 +19,7 @@ CFBundleSignature ???? CFBundleVersion - 1.1.1 + 1.2.2 NSPrincipalClass OEGameCoreController OEGameCoreClass diff --git a/NativeApp.cpp b/NativeApp.cpp index b56f92f..9755b11 100644 --- a/NativeApp.cpp +++ b/NativeApp.cpp @@ -41,7 +41,7 @@ #include "gfx_es2/fbo.h" #include "GPU/GLES/GLStateCache.h" - +#include "GPU/GPUCommon.h" #include "GPU/GPUState.h" #include "input/input_state.h" @@ -91,7 +91,7 @@ public: void SetDebugMode(bool mode) override { } - bool InitGraphics(std::string *error_message) override { return true; } + bool InitGraphics(std::string *error_string, GraphicsContext **ctx)override { return true; } void ShutdownGraphics() override {} void InitSound() override {} @@ -134,7 +134,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_directory, co VFSRegister("", new DirectoryAssetReader(external_directory)); } -void NativeInitGraphics() +void NativeInitGraphics(GraphicsContext *graphicsContext) { // Save framebuffer to later be bound again glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &framebuffer); @@ -144,11 +144,11 @@ void NativeInitGraphics() void NativeResized(){} -void NativeRender() +void NativeRender(GraphicsContext *graphicsContext) { glstate.Restore(); - ReapplyGfxState(); + gpu->ReapplyGfxState(); s64 blockTicks = usToCycles(1000000 / 10); while(coreState == CORE_RUNNING) diff --git a/PPSSPP.xcodeproj/project.pbxproj b/PPSSPP.xcodeproj/project.pbxproj index afcd1f2..dfe7323 100644 --- a/PPSSPP.xcodeproj/project.pbxproj +++ b/PPSSPP.xcodeproj/project.pbxproj @@ -23,6 +23,16 @@ /* Begin PBXBuildFile section */ 3DFCE410186F64170046C035 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DFCE40F186F64170046C035 /* libz.dylib */; }; + 3E7193251CE4DAB9007E791C /* SasReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193231CE4DAB9007E791C /* SasReverb.cpp */; }; + 3E71932B1CE4DADD007E791C /* GPUStateUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193261CE4DADD007E791C /* GPUStateUtils.cpp */; }; + 3E71932C1CE4DADD007E791C /* ShaderId.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193281CE4DADD007E791C /* ShaderId.cpp */; }; + 3E71932E1CE4DB18007E791C /* GPUStateUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193261CE4DADD007E791C /* GPUStateUtils.cpp */; }; + 3E71932F1CE4DB18007E791C /* ShaderId.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193281CE4DADD007E791C /* ShaderId.cpp */; }; + 3E7193311CE4DB3B007E791C /* SasReverb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193231CE4DAB9007E791C /* SasReverb.cpp */; }; + 3E7193341CE4DD40007E791C /* free.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193321CE4DD40007E791C /* free.cpp */; }; + 3E7193351CE4DD57007E791C /* free.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193321CE4DD40007E791C /* free.cpp */; }; + 3E7193381CE4DD79007E791C /* RamCachingFileLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193361CE4DD79007E791C /* RamCachingFileLoader.cpp */; }; + 3E7193391CE4DD8C007E791C /* RamCachingFileLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E7193361CE4DD79007E791C /* RamCachingFileLoader.cpp */; }; 8706346C1C2516A1007FAA2F /* knownfuncs.ini in Resources */ = {isa = PBXBuildFile; fileRef = 8706346A1C2516A1007FAA2F /* knownfuncs.ini */; }; 8706346D1C2516A1007FAA2F /* langregion.ini in Resources */ = {isa = PBXBuildFile; fileRef = 8706346B1C2516A1007FAA2F /* langregion.ini */; }; 87E051311B1029BD00E870E1 /* libsfmt19937.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 87E051301B1028FC00E870E1 /* libsfmt19937.a */; }; @@ -478,6 +488,17 @@ /* Begin PBXFileReference section */ 3DFCE40F186F64170046C035 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 3E7193231CE4DAB9007E791C /* SasReverb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SasReverb.cpp; sourceTree = ""; }; + 3E7193241CE4DAB9007E791C /* SasReverb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SasReverb.h; sourceTree = ""; }; + 3E7193261CE4DADD007E791C /* GPUStateUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUStateUtils.cpp; sourceTree = ""; }; + 3E7193271CE4DADD007E791C /* ShaderCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShaderCommon.h; sourceTree = ""; }; + 3E7193281CE4DADD007E791C /* ShaderId.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShaderId.cpp; sourceTree = ""; }; + 3E7193291CE4DADD007E791C /* ShaderId.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShaderId.h; sourceTree = ""; }; + 3E71932A1CE4DADD007E791C /* VertexDecoderFake.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VertexDecoderFake.cpp; sourceTree = ""; }; + 3E7193321CE4DD40007E791C /* free.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = free.cpp; sourceTree = ""; }; + 3E7193331CE4DD40007E791C /* free.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = free.h; sourceTree = ""; }; + 3E7193361CE4DD79007E791C /* RamCachingFileLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RamCachingFileLoader.cpp; sourceTree = ""; }; + 3E7193371CE4DD79007E791C /* RamCachingFileLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RamCachingFileLoader.h; sourceTree = ""; }; 8706346A1C2516A1007FAA2F /* knownfuncs.ini */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = knownfuncs.ini; sourceTree = ""; }; 8706346B1C2516A1007FAA2F /* langregion.ini */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = langregion.ini; sourceTree = ""; }; 87E051301B1028FC00E870E1 /* libsfmt19937.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsfmt19937.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1714,6 +1735,8 @@ 87E4F3551C249AF300110A77 /* file */ = { isa = PBXGroup; children = ( + 3E7193321CE4DD40007E791C /* free.cpp */, + 3E7193331CE4DD40007E791C /* free.h */, 87E4F3561C249AF300110A77 /* chunk_file.cpp */, 87E4F3571C249AF300110A77 /* chunk_file.h */, 87E4F3581C249AF300110A77 /* CMakeLists.txt */, @@ -2018,6 +2041,8 @@ 87E4F4171C24A05F00110A77 /* FileLoaders */ = { isa = PBXGroup; children = ( + 3E7193361CE4DD79007E791C /* RamCachingFileLoader.cpp */, + 3E7193371CE4DD79007E791C /* RamCachingFileLoader.h */, 87E4F4181C24A05F00110A77 /* CachingFileLoader.cpp */, 87E4F4191C24A05F00110A77 /* CachingFileLoader.h */, 87E4F41A1C24A05F00110A77 /* DiskCachingFileLoader.cpp */, @@ -2035,6 +2060,11 @@ 8C2D4ED91824011100E65166 /* Common */ = { isa = PBXGroup; children = ( + 3E7193261CE4DADD007E791C /* GPUStateUtils.cpp */, + 3E7193271CE4DADD007E791C /* ShaderCommon.h */, + 3E7193281CE4DADD007E791C /* ShaderId.cpp */, + 3E7193291CE4DADD007E791C /* ShaderId.h */, + 3E71932A1CE4DADD007E791C /* VertexDecoderFake.cpp */, 87E4F4331C24A5DB00110A77 /* DepalettizeShaderCommon.cpp */, 87E4F4341C24A5DB00110A77 /* DepalettizeShaderCommon.h */, 8C9F4CCC1A9B2481002719B3 /* DrawEngineCommon.cpp */, @@ -2580,6 +2610,8 @@ 8CAFA8E71785B3C200647A96 /* HW */ = { isa = PBXGroup; children = ( + 3E7193231CE4DAB9007E791C /* SasReverb.cpp */, + 3E7193241CE4DAB9007E791C /* SasReverb.h */, 8CA153C417C4108D0003002D /* AsyncIOManager.h */, 8CA153C517C4108D0003002D /* AsyncIOManager.cpp */, 8C2D4ED7182400A700E65166 /* BufferQueue.h */, @@ -3344,7 +3376,9 @@ buildActionMask = 2147483647; files = ( 8CAFC0D21785B3DC00647A96 /* ABI.cpp in Sources */, + 3E7193381CE4DD79007E791C /* RamCachingFileLoader.cpp in Sources */, 8C2D4F0C182405DA00E65166 /* ArmEmitter.cpp in Sources */, + 3E7193341CE4DD40007E791C /* free.cpp in Sources */, 8CAFC0D41785B3EA00647A96 /* CPUDetect.cpp in Sources */, 8C43DD001A82042400C46968 /* FakeCPUDetect.cpp in Sources */, 8C2D4EBF1823FF2B00E65166 /* ChunkFile.cpp in Sources */, @@ -3352,6 +3386,7 @@ 8CAFC0DE1785B43300647A96 /* ConsoleListener.cpp in Sources */, 8C9F4CCB1A9B2402002719B3 /* sha256.cpp in Sources */, 8CAFC0E61785B45500647A96 /* md5.cpp in Sources */, + 3E71932C1CE4DADD007E791C /* ShaderId.cpp in Sources */, 8CAFC0E81785B46000647A96 /* sha1.cpp in Sources */, 8CAFC0F01785B49800647A96 /* FileUtil.cpp in Sources */, 8CAFC0F41785B4AA00647A96 /* KeyMap.cpp in Sources */, @@ -3362,6 +3397,8 @@ 8CAFC0FA1785B4D900647A96 /* MemArena.cpp in Sources */, 8CAFC0FC1785B4D900647A96 /* MemoryUtil.cpp in Sources */, 8CAFC0FE1785B4D900647A96 /* Misc.cpp in Sources */, + 3E71932B1CE4DADD007E791C /* GPUStateUtils.cpp in Sources */, + 3E7193251CE4DAB9007E791C /* SasReverb.cpp in Sources */, 8CAFC0FF1785B4D900647A96 /* MsgHandler.cpp in Sources */, 8CAFC1011785B4D900647A96 /* StringUtils.cpp in Sources */, 8CAFC1051785B4D900647A96 /* ThreadPools.cpp in Sources */, @@ -3382,6 +3419,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3E7193351CE4DD57007E791C /* free.cpp in Sources */, 87E4F4471C24AE3E00110A77 /* backtrace.cpp in Sources */, 87E4F4481C24AE6900110A77 /* buffer.cpp in Sources */, 87E4F4491C24AE6F00110A77 /* colorutil.cpp in Sources */, @@ -3448,6 +3486,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3E71932E1CE4DB18007E791C /* GPUStateUtils.cpp in Sources */, + 3E71932F1CE4DB18007E791C /* ShaderId.cpp in Sources */, 87E4F4371C24A60A00110A77 /* GPUDebugInterface.cpp in Sources */, 8C9F4CD01A9B2482002719B3 /* DrawEngineCommon.cpp in Sources */, 8C2D4EF71824011100E65166 /* Breakpoints.cpp in Sources */, @@ -3540,6 +3580,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3E7193391CE4DD8C007E791C /* RamCachingFileLoader.cpp in Sources */, + 3E7193311CE4DB3B007E791C /* SasReverb.cpp in Sources */, 8CB74E021785F6F200C652A7 /* BlockDevices.cpp in Sources */, 8CAFC29C1785CD3C00647A96 /* Asm.cpp in Sources */, 8CAFC29E1785CD3C00647A96 /* CompALU.cpp in Sources */, diff --git a/PPSSPPGameCore.mm b/PPSSPPGameCore.mm index 7b01bfc..091d4bc 100644 --- a/PPSSPPGameCore.mm +++ b/PPSSPPGameCore.mm @@ -103,6 +103,10 @@ g_Config.iShowFPSCounter = true; g_Config.bFrameSkipUnthrottle = false; + g_Config.bSeparateIOThread = true; + g_Config.bSeparateCPUThread = true; + g_Config.bSeparateSASThread = true; + _coreParam.cpuCore = CPU_JIT; _coreParam.gpuCore = GPU_GLES; _coreParam.enableSound = true; @@ -112,7 +116,7 @@ _coreParam.printfEmuLog = false; _coreParam.headLess = false; _coreParam.unthrottle = true; - + _coreParam.renderWidth = 480; _coreParam.renderHeight = 272; _coreParam.pixelWidth = 480; @@ -144,7 +148,7 @@ NSString *resourcePath = [[[[self owner] bundle] resourcePath] stringByAppendingString:@"/"]; NativeInit(0, nil, nil, [resourcePath UTF8String], nil, false); - NativeInitGraphics(); + NativeInitGraphics(0); } if(_shouldReset) @@ -163,7 +167,7 @@ host->UpdateDisassembly(); } - NativeRender(); + NativeRender(0); glFlushRenderAPPLE(); float vps, fps; diff --git a/gfx/gl_common.h b/gfx/gl_common.h index b49e1c2..4b6774d 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -55,3 +55,6 @@ typedef char GLchar; #define glDeleteRenderbuffersEXT glDeleteRenderbuffers static void (*glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum* attachments) = 0; +static void (*glCopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) = 0; +static void (*glCopyImageSubDataNV)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) = 0; + diff --git a/gfx_es2/fbo.cpp b/gfx_es2/fbo.cpp index e1e0fd4..3c3f775 100644 --- a/gfx_es2/fbo.cpp +++ b/gfx_es2/fbo.cpp @@ -147,6 +147,18 @@ int fbo_check_framebuffer_status(FBO *fbo) { return (int)fbStatus; } +int fbo_standard_z_depth() { + // This matches the fbo_create() logic. + if (gl_extensions.IsGLES) { + if (gl_extensions.OES_packed_depth_stencil) { + return 24; + } + return gl_extensions.OES_depth24 ? 24 : 16; + } else { + return 24; + } +} + FBO *fbo_create(int width, int height, int num_color_textures, bool z_stencil, FBOColorDepth colorDepth) { CheckGLExtensions(); diff --git a/ppsspp b/ppsspp index 91e5764..5574665 160000 --- a/ppsspp +++ b/ppsspp @@ -1 +1 @@ -Subproject commit 91e576449fd538e9a0885128b8156a32ad939222 +Subproject commit 5574665c761c6401ea37f1e31fc4e5082ed1717d