diff --git a/CMakeLists.txt b/CMakeLists.txt index 64065ebdc..ef939d18c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ option(USE_GLES "Use GLES[3] API" OFF) option(USE_GLES2 "Use GLES2 API" OFF) option(USE_HOST_LIBZIP "Use host libzip" ON) option(USE_OPENMP "Use OpenMP if available" ON) +option(USE_VULKAN "Build with Vulkan support" ON) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake") @@ -148,8 +149,10 @@ if(MINGW) target_link_libraries(${PROJECT_NAME} PRIVATE "-static-libgcc -static-libstdc++") endif() -if(NOT ANDROID) +if(WIN32) find_package(SDL2 HINTS "${CMAKE_CURRENT_BINARY_DIR}/core/deps/SDL/cmake") +elseif(NOT ANDROID) + find_package(SDL2) endif() if(SDL2_FOUND) target_compile_definitions(${PROJECT_NAME} PRIVATE USE_SDL USE_SDL_AUDIO) @@ -228,7 +231,7 @@ if(PKG_CONFIG_FOUND AND NOT ANDROID AND NOT APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE opagent) endif() - find_package(miniupnpc) + find_package(Miniupnpc) if (MINIUPNP_FOUND) target_include_directories(${PROJECT_NAME} PRIVATE ${MINIUPNP_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} PRIVATE ${MINIUPNP_LIBRARIES}) @@ -238,10 +241,12 @@ endif() if(UNIX AND NOT APPLE AND NOT ANDROID) if(USE_GLES2) target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES2) - target_link_libraries(${PROJECT_NAME} PRIVATE GLESv2 EGL) + target_link_libraries(${PROJECT_NAME} PRIVATE GLESv2) elseif(USE_GLES) target_compile_definitions(${PROJECT_NAME} PRIVATE GLES GLES3) - target_link_libraries(${PROJECT_NAME} PRIVATE EGL) + if(NOT SDL2_FOUND) + target_link_libraries(${PROJECT_NAME} PRIVATE EGL) + endif() else() set(OpenGL_GL_PREFERENCE LEGACY) find_package(OpenGL REQUIRED) @@ -795,7 +800,7 @@ target_sources(${PROJECT_NAME} PRIVATE core/rend/TexCache.cpp core/rend/TexCache.h) -if(NOT (APPLE OR ANDROID OR USE_GLES)) +if(NOT (APPLE OR ANDROID OR USE_GLES OR USE_GLES2)) target_sources(${PROJECT_NAME} PRIVATE core/rend/gl4/abuffer.cpp core/rend/gl4/gl4.h @@ -804,7 +809,7 @@ if(NOT (APPLE OR ANDROID OR USE_GLES)) core/rend/gl4/gltex.cpp) endif() -if(NOT APPLE) +if(USE_VULKAN AND NOT APPLE) if(ANDROID) set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_ANDROID_KHR) elseif(X11_FOUND) diff --git a/core/build.h b/core/build.h index 901f2e6e0..b36264f11 100755 --- a/core/build.h +++ b/core/build.h @@ -247,7 +247,7 @@ #define SH4_RAM_CLOCK (100*1000*1000) //[100000000] XTal(13.5) -> PLL (33.3) -> PLL 1:3 (100) , also suplied to HOLLY chip #define G2_BUS_CLOCK (25*1000*1000) //[25000000] from Holly, from SH4_RAM_CLOCK w/ 2 2:1 plls -#if defined(GLES) && !defined(GLES3) +#if defined(GLES) && !defined(GLES3) && !defined(GLES2) // Only use GL ES 2.0 API functions #define GLES2 #endif diff --git a/core/core.mk b/core/core.mk index 64e55778f..b04e0bd5c 100755 --- a/core/core.mk +++ b/core/core.mk @@ -72,16 +72,6 @@ ifdef FOR_WINDOWS RZDCY_CFLAGS += -I$(RZDCY_SRC_DIR)/deps/dirent endif -ifdef FOR_PANDORA -RZDCY_CFLAGS += \ - $(CFLAGS) -c -O3 \ - -DNDEBUG -DPANDORA\ - -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ - -frename-registers -fsingle-precision-constant -ffast-math \ - -ftree-vectorize -fomit-frame-pointer - RZDCY_CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -endif - ifdef USE_VULKAN ifdef FOR_WINDOWS RZDCY_CFLAGS += -DVK_USE_PLATFORM_WIN32_KHR diff --git a/core/rec-ARM/rec_arm.cpp b/core/rec-ARM/rec_arm.cpp index 915be113b..93a0c82a8 100644 --- a/core/rec-ARM/rec_arm.cpp +++ b/core/rec-ARM/rec_arm.cpp @@ -464,59 +464,42 @@ void ngen_CC_Param(shil_opcode* op,shil_param* par,CanonicalParamType tp) switch(tp) { case CPT_f32rv: - #ifdef ARM_HARDFP - { + #ifdef __ARM_PCS_VFP + // -mfloat-abi=hard if (reg.IsAllocg(*par)) - { - //printf("MOV(reg.map(*par),r0); %d\n",reg.map(*par)); - VMOV(reg.mapg(*par),f0); - } + VMOV(reg.mapg(*par), f0); else if (reg.IsAllocf(*par)) - { - //VMOV(reg.mapf(*par),0,r0); %d\n",reg.map(*par)); - VMOV(reg.mapfs(*par),f0); - } - } - break; - #endif + VMOV(reg.mapfs(*par), f0); + break; + #endif case CPT_u32rv: case CPT_u64rvL: - { - if (reg.IsAllocg(*par)) - { - //printf("MOV(reg.map(*par),r0); %d\n",reg.map(*par)); - MOV(reg.mapg(*par),r0); - } - else if (reg.IsAllocf(*par)) - { - //VMOV(reg.mapf(*par),0,r0); %d\n",reg.map(*par)); - VMOV(reg.mapfs(*par),r0); - } - else - die("unhandled param"); - } + if (reg.IsAllocg(*par)) + MOV(reg.mapg(*par), r0); + else if (reg.IsAllocf(*par)) + VMOV(reg.mapfs(*par), r0); + else + die("unhandled param"); break; case CPT_u64rvH: - { - verify(reg.IsAllocg(*par)); - - MOV(reg.mapg(*par),r1); - } + verify(reg.IsAllocg(*par)); + MOV(reg.mapg(*par), r1); break; case CPT_u32: case CPT_ptr: case CPT_f32: { - CC_PS t={tp,par}; + CC_PS t = { tp, par }; CC_pars.push_back(t); } break; default: die("invalid tp"); + break; } } @@ -536,42 +519,30 @@ void ngen_CC_Call(shil_opcode* op, void* function) { if (param.par->is_reg()) { - #ifdef ARM_HARDFP + #ifdef __ARM_PCS_VFP + // -mfloat-abi=hard if (param.type == CPT_f32) { if (reg.IsAllocg(*param.par)) - { - //printf("MOV((eReg)rd,reg.map(*param.par)); %d %d\n",rd,reg.map(*param.par)); VMOV((eFSReg)fd, reg.mapg(*param.par)); - } else if (reg.IsAllocf(*param.par)) - { - //printf("LoadSh4Reg_mem((eReg)rd, *param.par); %d\n",rd); VMOV((eFSReg)fd, reg.mapfs(*param.par)); - } else - die("Must not happen!\n"); + die("Must not happen!"); continue; } #endif if (reg.IsAllocg(*param.par)) - { - //printf("MOV((eReg)rd,reg.map(*param.par)); %d %d\n",rd,reg.map(*param.par)); MOV((eReg)rd, reg.mapg(*param.par)); - } else if (reg.IsAllocf(*param.par)) - { - //printf("LoadSh4Reg_mem((eReg)rd, *param.par); %d\n",rd); VMOV((eReg)rd, reg.mapfs(*param.par)); - } else - die("Must not happen!\n"); + die("Must not happen!"); } else { verify(param.par->is_imm()); - //printf("MOV32((eReg)rd, param.par->_imm); %d\n",rd); MOV32((eReg)rd, param.par->_imm); } } diff --git a/core/rend/gui.cpp b/core/rend/gui.cpp index ec4bcc87b..e2b60cc5f 100644 --- a/core/rend/gui.cpp +++ b/core/rend/gui.cpp @@ -1338,12 +1338,14 @@ static void gui_display_settings() } if (ImGui::CollapsingHeader("Texture Upscaling", ImGuiTreeNodeFlags_DefaultOpen)) { +#ifndef TARGET_NO_OPENMP OptionSlider("Texture Upscaling", config::TextureUpscale, 1, 8, "Upscale textures with the xBRZ algorithm. Only on fast platforms and for certain 2D games"); OptionSlider("Upscaled Texture Max Size", config::MaxFilteredTextureSize, 8, 1024, "Textures larger than this dimension squared will not be upscaled"); OptionSlider("Max Threads", config::MaxThreads, 1, 8, "Maximum number of threads to use for texture upscaling. Recommended: number of physical cores minus one"); +#endif OptionCheckbox("Load Custom Textures", config::CustomTextures, "Load custom/high-res textures from data/textures/"); } diff --git a/core/wsi/gl32funcs.c b/core/wsi/gl32funcs.c index a958dbc93..edb988804 100644 --- a/core/wsi/gl32funcs.c +++ b/core/wsi/gl32funcs.c @@ -18,10 +18,14 @@ */ #include #include -#include #if defined(GLES3) && defined(__ANDROID__) #include #endif +#ifdef USE_SDL +#include +#else +#include +#endif #include "gl32funcs.h" #include "build.h" @@ -30,12 +34,16 @@ void load_gles_symbols() #ifdef GLES3 for (int i = 0; rglgen_symbol_map[i].sym != NULL; i++) { +#ifdef USE_SDL + *(void **)rglgen_symbol_map[i].ptr = SDL_GL_GetProcAddress(rglgen_symbol_map[i].sym); +#else #if defined(__ANDROID__) //try to load via dlsym -- older android (< 4.4?) can't load everything via eglGetProcAddress *(void **)rglgen_symbol_map[i].ptr = (void*)dlsym(RTLD_DEFAULT, rglgen_symbol_map[i].sym); if (*(void **)rglgen_symbol_map[i].ptr == NULL) #endif *(void **)rglgen_symbol_map[i].ptr = eglGetProcAddress(rglgen_symbol_map[i].sym); +#endif } #endif } diff --git a/shell/cmake/Findminiupnpc.cmake b/shell/cmake/FindMiniupnpc.cmake similarity index 100% rename from shell/cmake/Findminiupnpc.cmake rename to shell/cmake/FindMiniupnpc.cmake diff --git a/shell/cmake/FindSDL2.cmake b/shell/cmake/FindSDL2.cmake new file mode 100644 index 000000000..08d8dc608 --- /dev/null +++ b/shell/cmake/FindSDL2.cmake @@ -0,0 +1,250 @@ +# - Find SDL2 +# Find the SDL2 headers and libraries +# +# SDL2::SDL2 - Imported target to use for building a library +# SDL2::SDL2main - Imported interface target to use if you want SDL and SDLmain. +# SDL2_FOUND - True if SDL2 was found. +# SDL2_DYNAMIC - If we found a DLL version of SDL (meaning you might want to copy a DLL from SDL2::SDL2) +# +# Original Author: +# 2015 Ryan Pavlik +# +# Copyright Sensics, Inc. 2015. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# Set up architectures (for windows) and prefixes (for mingw builds) +if(WIN32) + if(MINGW) + include(MinGWSearchPathExtras OPTIONAL) + if(MINGWSEARCH_TARGET_TRIPLE) + set(SDL2_PREFIX ${MINGWSEARCH_TARGET_TRIPLE}) + endif() + endif() + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(SDL2_LIB_PATH_SUFFIX lib/x64) + if(NOT MSVC AND NOT SDL2_PREFIX) + set(SDL2_PREFIX x86_64-w64-mingw32) + endif() + else() + set(SDL2_LIB_PATH_SUFFIX lib/x86) + if(NOT MSVC AND NOT SDL2_PREFIX) + set(SDL2_PREFIX i686-w64-mingw32) + endif() + endif() +endif() + +if(SDL2_PREFIX) + set(SDL2_ORIGPREFIXPATH ${CMAKE_PREFIX_PATH}) + if(SDL2_ROOT_DIR) + list(APPEND CMAKE_PREFIX_PATH "${SDL2_ROOT_DIR}") + endif() + if(CMAKE_PREFIX_PATH) + foreach(_prefix ${CMAKE_PREFIX_PATH}) + list(APPEND CMAKE_PREFIX_PATH "${_prefix}/${SDL2_PREFIX}") + endforeach() + endif() + if(MINGWSEARCH_PREFIXES) + list(APPEND CMAKE_PREFIX_PATH ${MINGWSEARCH_PREFIXES}) + endif() +endif() + +# Invoke pkgconfig for hints +find_package(PkgConfig QUIET) +set(SDL2_INCLUDE_HINTS) +set(SDL2_LIB_HINTS) +if(PKG_CONFIG_FOUND) + pkg_search_module(SDL2PC QUIET sdl2) + if(SDL2PC_INCLUDE_DIRS) + set(SDL2_INCLUDE_HINTS ${SDL2PC_INCLUDE_DIRS}) + endif() + if(SDL2PC_LIBRARY_DIRS) + set(SDL2_LIB_HINTS ${SDL2PC_LIBRARY_DIRS}) + endif() +endif() + +include(FindPackageHandleStandardArgs) + +find_library(SDL2_LIBRARY + NAMES + SDL2 + HINTS + ${SDL2_LIB_HINTS} + PATHS + ${SDL2_ROOT_DIR} + ENV SDL2DIR + PATH_SUFFIXES lib SDL2 ${SDL2_LIB_PATH_SUFFIX}) + +set(_sdl2_framework FALSE) +# Some special-casing if we've found/been given a framework. +# Handles whether we're given the library inside the framework or the framework itself. +if(APPLE AND "${SDL2_LIBRARY}" MATCHES "(/[^/]+)*.framework(/.*)?$") + set(_sdl2_framework TRUE) + set(SDL2_FRAMEWORK "${SDL2_LIBRARY}") + # Move up in the directory tree as required to get the framework directory. + while("${SDL2_FRAMEWORK}" MATCHES "(/[^/]+)*.framework(/.*)$" AND NOT "${SDL2_FRAMEWORK}" MATCHES "(/[^/]+)*.framework$") + get_filename_component(SDL2_FRAMEWORK "${SDL2_FRAMEWORK}" DIRECTORY) + endwhile() + if("${SDL2_FRAMEWORK}" MATCHES "(/[^/]+)*.framework$") + set(SDL2_FRAMEWORK_NAME ${CMAKE_MATCH_1}) + # If we found a framework, do a search for the header ahead of time that will be more likely to get the framework header. + find_path(SDL2_INCLUDE_DIR + NAMES + SDL_haptic.h # this file was introduced with SDL2 + HINTS + "${SDL2_FRAMEWORK}/Headers/") + else() + # For some reason we couldn't get the framework directory itself. + # Shouldn't happen, but might if something is weird. + unset(SDL2_FRAMEWORK) + endif() +endif() + +find_path(SDL2_INCLUDE_DIR + NAMES + SDL_haptic.h # this file was introduced with SDL2 + HINTS + ${SDL2_INCLUDE_HINTS} + PATHS + ${SDL2_ROOT_DIR} + ENV SDL2DIR + PATH_SUFFIXES include include/sdl2 include/SDL2 SDL2) + +if(WIN32 AND SDL2_LIBRARY) + find_file(SDL2_RUNTIME_LIBRARY + NAMES + SDL2.dll + libSDL2.dll + HINTS + ${SDL2_LIB_HINTS} + PATHS + ${SDL2_ROOT_DIR} + ENV SDL2DIR + PATH_SUFFIXES bin lib ${SDL2_LIB_PATH_SUFFIX}) +endif() + + +if(WIN32 OR ANDROID OR IOS OR (APPLE AND NOT _sdl2_framework)) + set(SDL2_EXTRA_REQUIRED SDL2_SDLMAIN_LIBRARY) + find_library(SDL2_SDLMAIN_LIBRARY + NAMES + SDL2main + PATHS + ${SDL2_ROOT_DIR} + ENV SDL2DIR + PATH_SUFFIXES lib ${SDL2_LIB_PATH_SUFFIX}) +endif() + +if(MINGW AND NOT SDL2PC_FOUND) + find_library(SDL2_MINGW_LIBRARY mingw32) + find_library(SDL2_MWINDOWS_LIBRARY mwindows) +endif() + +if(SDL2_PREFIX) + # Restore things the way they used to be. + set(CMAKE_PREFIX_PATH ${SDL2_ORIGPREFIXPATH}) +endif() + +# handle the QUIETLY and REQUIRED arguments and set QUATLIB_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SDL2 + DEFAULT_MSG + SDL2_LIBRARY + SDL2_INCLUDE_DIR + ${SDL2_EXTRA_REQUIRED}) + +if(SDL2_FOUND) + if(NOT TARGET SDL2::SDL2) + # Create SDL2::SDL2 + if(WIN32 AND SDL2_RUNTIME_LIBRARY) + set(SDL2_DYNAMIC TRUE) + add_library(SDL2::SDL2 SHARED IMPORTED) + set_target_properties(SDL2::SDL2 + PROPERTIES + IMPORTED_IMPLIB "${SDL2_LIBRARY}" + IMPORTED_LOCATION "${SDL2_RUNTIME_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}" + ) + else() + add_library(SDL2::SDL2 UNKNOWN IMPORTED) + if(SDL2_FRAMEWORK AND SDL2_FRAMEWORK_NAME) + # Handle the case that SDL2 is a framework and we were able to decompose it above. + set_target_properties(SDL2::SDL2 PROPERTIES + IMPORTED_LOCATION "${SDL2_FRAMEWORK}/${SDL2_FRAMEWORK_NAME}") + elseif(_sdl2_framework AND SDL2_LIBRARY MATCHES "(/[^/]+)*.framework$") + # Handle the case that SDL2 is a framework and SDL_LIBRARY is just the framework itself. + + # This takes the basename of the framework, without the extension, + # and sets it (as a child of the framework) as the imported location for the target. + # This is the library symlink inside of the framework. + set_target_properties(SDL2::SDL2 PROPERTIES + IMPORTED_LOCATION "${SDL2_LIBRARY}/${CMAKE_MATCH_1}") + else() + # Handle non-frameworks (including non-Mac), as well as the case that we're given the library inside of the framework + set_target_properties(SDL2::SDL2 PROPERTIES + IMPORTED_LOCATION "${SDL2_LIBRARY}") + endif() + set_target_properties(SDL2::SDL2 + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}" + ) + endif() + + if(APPLE) + # Need Cocoa here, is always a framework + find_library(SDL2_COCOA_LIBRARY Cocoa) + list(APPEND SDL2_EXTRA_REQUIRED SDL2_COCOA_LIBRARY) + if(SDL2_COCOA_LIBRARY) + set_target_properties(SDL2::SDL2 PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES ${SDL2_COCOA_LIBRARY}) + endif() + endif() + + + # Compute what to do with SDL2main + set(SDL2MAIN_LIBRARIES SDL2::SDL2) + add_library(SDL2::SDL2main INTERFACE IMPORTED) + if(SDL2_SDLMAIN_LIBRARY) + add_library(SDL2::SDL2main_real STATIC IMPORTED) + set_target_properties(SDL2::SDL2main_real + PROPERTIES + IMPORTED_LOCATION "${SDL2_SDLMAIN_LIBRARY}") + set(SDL2MAIN_LIBRARIES SDL2::SDL2main_real ${SDL2MAIN_LIBRARIES}) + endif() + if(MINGW) + # MinGW requires some additional libraries to appear earlier in the link line. + if(SDL2PC_LIBRARIES) + # Use pkgconfig-suggested extra libraries if available. + list(REMOVE_ITEM SDL2PC_LIBRARIES SDL2main SDL2) + set(SDL2MAIN_LIBRARIES ${SDL2PC_LIBRARIES} ${SDL2MAIN_LIBRARIES}) + else() + # fall back to extra libraries specified in pkg-config in + # an official binary distro of SDL2 for MinGW I downloaded + if(SDL2_MINGW_LIBRARY) + set(SDL2MAIN_LIBRARIES ${SDL2_MINGW_LIBRARY} ${SDL2MAIN_LIBRARIES}) + endif() + if(SDL2_MWINDOWS_LIBRARY) + set(SDL2MAIN_LIBRARIES ${SDL2_MWINDOWS_LIBRARY} ${SDL2MAIN_LIBRARIES}) + endif() + endif() + set_target_properties(SDL2::SDL2main + PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "main=SDL_main") + endif() + set_target_properties(SDL2::SDL2main + PROPERTIES + INTERFACE_LINK_LIBRARIES "${SDL2MAIN_LIBRARIES}") + endif() + mark_as_advanced(SDL2_ROOT_DIR) +endif() + +mark_as_advanced(SDL2_LIBRARY + SDL2_RUNTIME_LIBRARY + SDL2_INCLUDE_DIR + SDL2_SDLMAIN_LIBRARY + SDL2_COCOA_LIBRARY + SDL2_MINGW_LIBRARY + SDL2_MWINDOWS_LIBRARY) + diff --git a/shell/linux/Makefile b/shell/linux/Makefile index 3d4a52fc2..bec4ce20d 100644 --- a/shell/linux/Makefile +++ b/shell/linux/Makefile @@ -155,7 +155,6 @@ else ifneq (,$(findstring armv7h,$(platform))) MFLAGS += -mfpu=neon ASFLAGS += -mfpu=neon endif - CFLAGS += -DARM_HARDFP -fsingle-precision-constant USE_GLES := 1 # LinCPP @@ -168,7 +167,6 @@ else ifneq (,$(findstring lincpp,$(platform))) # Raspberry Pi else ifneq (,$(findstring rpi,$(platform))) - CFLAGS += -DARM_HARDFP -fsingle-precision-constant ifneq (,$(findstring rpi2,$(platform))) MFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard ASFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard @@ -198,19 +196,17 @@ else ifneq (,$(findstring beagle,$(platform))) CC_PREFIX ?= arm-none-linux-gnueabi- MFLAGS += -marm -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp -funroll-loops ASFLAGS := -march=armv7-a -mfpu=neon -mfloat-abi=softfp - CFLAGS += -fsingle-precision-constant USE_GLES := 1 # Pandora else ifneq (,$(findstring pandora,$(platform))) - FOR_PANDORA := 1 USE_X11 := 1 USE_SDL := 1 PGO_USE := 1 USE_GLES := 1 - MFLAGS +== -marm -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -funroll-loops -fpermissive + MFLAGS += -marm -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -funroll-loops -ftree-vectorize -fomit-frame-pointer ASFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=softfp - CFLAGS += -D TARGET_PANDORA -D WEIRD_SLOWNESS -fsingle-precision-constant + CFLAGS += -D TARGET_PANDORA -DPANDORA # ODROIDs else ifneq (,$(findstring odroid,$(platform))) @@ -249,7 +245,7 @@ else ifneq (,$(findstring rockchip,$(platform))) MFLAGS += -marm -march=armv8-a+crc -mfpu=neon -mfloat-abi=hard -funroll-loops -mtune=cortex-a53 ASFLAGS += -march=armv8-a+crc -mfpu=neon -mfloat-abi=hard CXXFLAGS += -fexceptions - CFLAGS += -fsingle-precision-constant -DMESA_EGL_NO_X11_HEADERS=1 -DEGL_NO_X11=1 -fpermissive -fno-builtin-sqrtf + CFLAGS += -DMESA_EGL_NO_X11_HEADERS=1 -DEGL_NO_X11=1 -fpermissive -fno-builtin-sqrtf INCS += -I/opt/vc/include/ -I/opt/vc/include/libdrm LIBS += -ldrm -lGLESv2 USE_GLES := 1 @@ -266,7 +262,6 @@ else ifneq (,$(findstring vero4k,$(platform))) MFLAGS += -mfpu=neon ASFLAGS += -mfpu=neon endif - CFLAGS += -DARM_HARDFP -fsingle-precision-constant INCS += -I/opt/vero3/include/ LIBS += -L/opt/vero3/lib/ -lEGL -lGLESv2 USE_GLES := 1 @@ -308,7 +303,7 @@ include $(RZDCY_SRC_DIR)/core.mk LDFLAGS += -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common -fopenmp CFLAGS += $(RZDCY_CFLAGS) -g -O3 -D NDEBUG -c -fopenmp #-D NO_REND -CFLAGS += -frename-registers -fno-strict-aliasing +CFLAGS += -frename-registers -fno-strict-aliasing -fsingle-precision-constant CFLAGS += -ftree-vectorize -Wall -Wno-unused-result CXXFLAGS += $(RZDCY_CFLAGS) -fno-rtti -fno-operator-names -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++11