diff --git a/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp b/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp index cfa5999..3d45ccb 100644 --- a/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp +++ b/AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp @@ -2541,25 +2541,48 @@ bool GpDisplayDriver_SDL_GL2::InitResources(uint32_t physicalWidth, uint32_t phy GpComPtr> drawQuadVertexShader = CreateShader(GpBinarizedShaders::g_drawQuadV_GL2); GpComPtr> drawQuadPaletteFlickerPixelShader = CreateShader(GpBinarizedShaders::g_drawQuadPalettePF_GL2); + if (drawQuadPaletteFlickerPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuadPaletteFlickerPixelShader"); + GpComPtr> drawQuadPaletteNoFlickerPixelShader = CreateShader(GpBinarizedShaders::g_drawQuadPalettePNF_GL2); + if (drawQuadPaletteNoFlickerPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuadPaletteNoFlickerPixelShader"); + GpComPtr> drawQuad32FlickerPixelShader = CreateShader(GpBinarizedShaders::g_drawQuad32PF_GL2); + if (drawQuad32FlickerPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuad32FlickerPixelShader"); GpComPtr> drawQuad32NoFlickerPixelShader = CreateShader(GpBinarizedShaders::g_drawQuad32PNF_GL2); + if (drawQuad32NoFlickerPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuad32NoFlickerPixelShader"); GpComPtr> drawQuadPaletteICCFPixelShader = CreateShader(GpBinarizedShaders::g_drawQuadPaletteICCPF_GL2); + if (drawQuadPaletteICCFPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuadPaletteICCFPixelShader"); GpComPtr> drawQuadPaletteICCNFPixelShader = CreateShader(GpBinarizedShaders::g_drawQuadPaletteICCPNF_GL2); + if (drawQuadPaletteICCNFPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuadPaletteICCNFPixelShader"); GpComPtr> drawQuad32ICCFPixelShader = CreateShader(GpBinarizedShaders::g_drawQuad32ICCPF_GL2); + if (drawQuad32ICCFPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuad32ICCFPixelShader"); GpComPtr> drawQuad32ICCNFPixelShader = CreateShader(GpBinarizedShaders::g_drawQuad32ICCPNF_GL2); + if (drawQuad32ICCNFPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "drawQuad32ICCNFPixelShader"); GpComPtr> scaleQuadPixelShader = CreateShader(GpBinarizedShaders::g_scaleQuadP_GL2); + if (scaleQuadPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "scaleQuadPixelShader"); GpComPtr> copyQuadPixelShader = CreateShader(GpBinarizedShaders::g_copyQuadP_GL2); - - if (!m_res.m_drawQuadPaletteFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteFlickerPixelShader) - || !m_res.m_drawQuadPaletteNoFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteNoFlickerPixelShader) - || !m_res.m_drawQuad32FlickerProgram.Link(this, drawQuadVertexShader, drawQuad32FlickerPixelShader) + if (copyQuadPixelShader == nullptr) + logger->Printf(IGpLogDriver::Category_Error, "GpDisplayDriver_SDL_GL2::InitResources: %s failed to create!", "copyQuadPixelShader"); + + if (//!m_res.m_drawQuadPaletteFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteFlickerPixelShader) + //|| + !m_res.m_drawQuadPaletteNoFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteNoFlickerPixelShader) + //|| !m_res.m_drawQuad32FlickerProgram.Link(this, drawQuadVertexShader, drawQuad32FlickerPixelShader) || !m_res.m_drawQuad32NoFlickerProgram.Link(this, drawQuadVertexShader, drawQuad32NoFlickerPixelShader) - || !m_res.m_drawQuadPaletteICCFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteICCFPixelShader) + //|| !m_res.m_drawQuadPaletteICCFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteICCFPixelShader) || !m_res.m_drawQuadPaletteICCNoFlickerProgram.Link(this, drawQuadVertexShader, drawQuadPaletteICCNFPixelShader) - || !m_res.m_drawQuad32ICCFlickerProgram.Link(this, drawQuadVertexShader, drawQuad32ICCFPixelShader) + //|| !m_res.m_drawQuad32ICCFlickerProgram.Link(this, drawQuadVertexShader, drawQuad32ICCFPixelShader) || !m_res.m_drawQuad32ICCNoFlickerProgram.Link(this, drawQuadVertexShader, drawQuad32ICCNFPixelShader) //|| !m_drawQuadRGBICCProgram.Link(this, drawQuadVertexShader, drawQuadRGBICCPixelShader) diff --git a/AerofoilSDL/ShaderCode/CopyQuadP.cpp b/AerofoilSDL/ShaderCode/CopyQuadP.cpp index 9627603..fab2c71 100644 --- a/AerofoilSDL/ShaderCode/CopyQuadP.cpp +++ b/AerofoilSDL/ShaderCode/CopyQuadP.cpp @@ -11,6 +11,11 @@ "}\n" namespace GpBinarizedShaders -{ +{ + //macos does not support precision in OpenGLES2 + #ifdef __MACOS__ + const char *g_copyQuadP_GL2 = GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_COPYQUADP_GLSL; + #else const char *g_copyQuadP_GL2 = GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_COPYQUADP_GLSL; + #endif } diff --git a/AerofoilSDL/ShaderCode/DrawQuad32P.cpp b/AerofoilSDL/ShaderCode/DrawQuad32P.cpp index 90b03a4..2ae17df 100644 --- a/AerofoilSDL/ShaderCode/DrawQuad32P.cpp +++ b/AerofoilSDL/ShaderCode/DrawQuad32P.cpp @@ -28,8 +28,16 @@ namespace GpBinarizedShaders { + //macos does not support precision in OpenGLES2 + #ifdef __MACOS__ + const char *g_drawQuad32PF_GL2 = "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; + const char *g_drawQuad32PNF_GL2 = GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; + const char *g_drawQuad32ICCPF_GL2 = "#define USE_ICC_PROFILE\n" "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; + const char *g_drawQuad32ICCPNF_GL2 = "#define USE_ICC_PROFILE\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; + #else const char *g_drawQuad32PF_GL2 = "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; const char *g_drawQuad32PNF_GL2 = GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; const char *g_drawQuad32ICCPF_GL2 = "#define USE_ICC_PROFILE\n" "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; const char *g_drawQuad32ICCPNF_GL2 = "#define USE_ICC_PROFILE\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUAD32P_GLSL; + #endif } diff --git a/AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp b/AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp index 95fc6a0..bd485f1 100644 --- a/AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp +++ b/AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp @@ -29,8 +29,16 @@ namespace GpBinarizedShaders { + //macos does not support precision in OpenGLES2 + #ifdef __MACOS__ + const char *g_drawQuadPalettePF_GL2 = "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; + const char *g_drawQuadPalettePNF_GL2 = GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; + const char *g_drawQuadPaletteICCPF_GL2 = "#define USE_ICC_PROFILE\n" "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; + const char *g_drawQuadPaletteICCPNF_GL2 = "#define USE_ICC_PROFILE\n" GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; + #else const char *g_drawQuadPalettePF_GL2 = "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; const char *g_drawQuadPalettePNF_GL2 = GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; const char *g_drawQuadPaletteICCPF_GL2 = "#define USE_ICC_PROFILE\n" "#define ENABLE_FLICKER\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; const char *g_drawQuadPaletteICCPNF_GL2 = "#define USE_ICC_PROFILE\n" GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_DRAWQUADPIXELCONSTANTS_H GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_DRAWQUADPALETTEP_GLSL; + #endif } diff --git a/AerofoilSDL/ShaderCode/ScaleQuadP.cpp b/AerofoilSDL/ShaderCode/ScaleQuadP.cpp index 014575b..34640d2 100644 --- a/AerofoilSDL/ShaderCode/ScaleQuadP.cpp +++ b/AerofoilSDL/ShaderCode/ScaleQuadP.cpp @@ -14,7 +14,12 @@ namespace GpBinarizedShaders { + //macos does not support precision in OpenGLES2 + #ifdef __MACOS__ + const char *g_scaleQuadP_GL2 = GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_SCALEQUADP_GLSL; + #else const char *g_scaleQuadP_GL2 = GP_GL_SHADER_CODE_MEDIUM_PRECISION_PREFIX GP_GL_SHADER_CODE_FUNCTIONS_H GP_GL_SHADER_CODE_SCALEQUADP_GLSL; + #endif extern const char *g_drawQuadRGBP_GL2; extern const char *g_drawQuad15BitP_GL2; diff --git a/AerofoilX/GpFileSystem_X.cpp b/AerofoilX/GpFileSystem_X.cpp index ada9d4e..98fb38c 100644 --- a/AerofoilX/GpFileSystem_X.cpp +++ b/AerofoilX/GpFileSystem_X.cpp @@ -205,7 +205,7 @@ bool GpFileSystem_X::ResolvePath(PortabilityLayer::VirtualDirectory_t virtualDir resolution += "/"; resolution += paths[i]; } - + return true; } diff --git a/AerofoilX/GpLogDriver_X.h b/AerofoilX/GpLogDriver_X.h index 5ca4c2b..3820610 100644 --- a/AerofoilX/GpLogDriver_X.h +++ b/AerofoilX/GpLogDriver_X.h @@ -12,7 +12,7 @@ public: GpLogDriver_X(); static void Init(); - + void VPrintf(Category category, const char *fmt, va_list args) override; void Shutdown() override; diff --git a/AerofoilX/GpSystemServices_X.cpp b/AerofoilX/GpSystemServices_X.cpp index 933c46d..92bbd68 100644 --- a/AerofoilX/GpSystemServices_X.cpp +++ b/AerofoilX/GpSystemServices_X.cpp @@ -91,6 +91,10 @@ bool GpSystemServices_X::IsTextInputObstructive() const bool GpSystemServices_X::IsFullscreenPreferred() const { + #ifdef __MACOS__ + return false; + #endif + return true; } diff --git a/GpCommon/IGpLogDriver.h b/GpCommon/IGpLogDriver.h index a369765..183571b 100644 --- a/GpCommon/IGpLogDriver.h +++ b/GpCommon/IGpLogDriver.h @@ -11,14 +11,28 @@ struct IGpLogDriver Category_Warning, Category_Error, }; - + virtual void VPrintf(Category category, const char *fmt, va_list args) = 0; virtual void Shutdown() = 0; + #ifdef __MACOS__ + template + void Printf(C category, F *fmt, T... t); + #else void Printf(Category category, const char *fmt, ...); + #endif + }; - +//this is temp, but args lose their types for some reason, garbling output +#ifdef __MACOS__ +template +inline void IGpLogDriver::Printf(C category, F *fmt, T... t) +{ + printf(fmt, t...); + printf("\n"); +} +#else inline void IGpLogDriver::Printf(Category category, const char *fmt, ...) { va_list args; @@ -26,3 +40,4 @@ inline void IGpLogDriver::Printf(Category category, const char *fmt, ...) this->VPrintf(category, fmt, args); va_end(args); } +#endif