apple: disable delay frame swapping, libretro: set base_width/height to 640x480, use gl 3.2 on macOS

This commit is contained in:
Flyinghead 2021-08-15 10:50:53 +02:00
parent 281a04837f
commit d7bc1f0f77
4 changed files with 25 additions and 9 deletions

View File

@ -77,7 +77,11 @@ if(NINTENDO_SWITCH)
elseif(LIBRETRO)
add_library(${PROJECT_NAME} SHARED core/emulator.cpp)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
else()
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "flycast_libretro")
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
@ -90,7 +94,9 @@ elseif(LIBRETRO)
target_link_libraries(${PROJECT_NAME} PRIVATE "-lGLESv2")
else()
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENGL)
if(NOT APPLE)
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-framework,OpenGL")
else()
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OIT)
endif()
if(WIN32)
@ -1154,9 +1160,9 @@ if(NOT LIBRETRO)
MACOSX_BUNDLE_INFO_STRING ""
MACOSX_BUNDLE_GUI_IDENTIFIER "com.flyinghead.Flycast"
MACOSX_BUNDLE_BUNDLE_NAME "com.flyinghead.Flycast"
MACOSX_BUNDLE_LONG_VERSION_STRING "1.0"
MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0"
MACOSX_BUNDLE_BUNDLE_VERSION "1"
MACOSX_BUNDLE_LONG_VERSION_STRING "${GIT_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${GIT_VERSION}"
MACOSX_BUNDLE_BUNDLE_VERSION ""
MACOSX_BUNDLE_COPYRIGHT "Copyright © 2021 Flycast contributors. All rights reserved."
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/shell/apple/emulator-ios/plist.in
@ -1218,7 +1224,9 @@ if(NOT LIBRETRO)
MACOSX_BUNDLE_INFO_STRING ""
MACOSX_BUNDLE_ICON_FILE "AppIcon"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.flyinghead.Flycast"
MACOSX_BUNDLE_LONG_VERSION_STRING ""
MACOSX_BUNDLE_LONG_VERSION_STRING "${GIT_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${GIT_VERSION}"
MACOSX_BUNDLE_BUNDLE_VERSION ""
MACOSX_BUNDLE_BUNDLE_NAME "Flycast"
MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0"
MACOSX_BUNDLE_BUNDLE_VERSION "1"

View File

@ -77,7 +77,11 @@ Option<bool> Fog("rend.Fog", true);
Option<bool> FloatVMUs("rend.FloatVMUs");
Option<bool> Rotate90("rend.Rotate90");
Option<bool> PerStripSorting("rend.PerStripSorting");
#ifdef __APPLE__
Option<bool> DelayFrameSwapping("rend.DelayFrameSwapping", false);
#else
Option<bool> DelayFrameSwapping("rend.DelayFrameSwapping", true);
#endif
Option<bool> WidescreenGameHacks("rend.WidescreenGameHacks");
std::array<Option<int>, 4> CrosshairColor {
Option<int>("rend.CrossHairColor1"),

View File

@ -122,7 +122,7 @@ double os_GetSeconds()
return a.tv_sec-tvs_base+a.tv_usec/1000000.0;
}
#if !defined(__unix__)
#if !defined(__unix__) && !defined(LIBRETRO)
void os_DebugBreak()
{
__builtin_trap();

View File

@ -417,8 +417,9 @@ static void setGameGeometry(retro_game_geometry& geometry)
geometry.aspect_ratio = 1 / geometry.aspect_ratio;
geometry.max_width = std::max(framebufferHeight * 16 / 9, framebufferWidth);
geometry.max_height = geometry.max_width;
geometry.base_width = framebufferWidth;
geometry.base_height = framebufferHeight;
// Avoid gigantic window size at startup
geometry.base_width = 640;
geometry.base_height = 480;
}
static void setAVInfo(retro_system_av_info& avinfo)
@ -1440,6 +1441,9 @@ static bool set_opengl_hw_render(u32 preferred)
#endif
params.imm_vbo_draw = NULL;
params.imm_vbo_disable = NULL;
#if defined(__APPLE__) && defined(HAVE_OPENGL)
preferred = RETRO_HW_CONTEXT_OPENGL_CORE;
#endif
#ifdef HAVE_OIT
if (config::RendererType == RenderType::OpenGL_OIT)
{