Merge remote-tracking branch 'origin/master' into offscreen
This commit is contained in:
@@ -16,12 +16,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ windows_x64, ubuntu-latest ]
|
os: [ windows_x64, ubuntu-latest, mac_arm ]
|
||||||
# - {
|
|
||||||
# name: "macOS",
|
|
||||||
# os: macos-latest,
|
|
||||||
# generator: '-G "xcode"'
|
|
||||||
# }
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|||||||
5
3rdParty/glfw/CMakeLists.txt
vendored
5
3rdParty/glfw/CMakeLists.txt
vendored
@@ -13,5 +13,8 @@ FetchContent_Declare(
|
|||||||
)
|
)
|
||||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
|
if(APPLE)
|
||||||
|
set(GLFW_VULKAN_STATIC ON CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
FetchContent_MakeAvailable(glfw)
|
FetchContent_MakeAvailable(glfw)
|
||||||
set(glfw_FOUND ON PARENT_SCOPE)
|
set(glfw_FOUND ON PARENT_SCOPE)
|
||||||
|
|||||||
10
3rdParty/libarchive/CMakeLists.txt
vendored
10
3rdParty/libarchive/CMakeLists.txt
vendored
@@ -28,6 +28,8 @@ function(LinkLibArchive TARGET)
|
|||||||
find_package(zstd QUIET)
|
find_package(zstd QUIET)
|
||||||
find_package(BZip2 QUIET)
|
find_package(BZip2 QUIET)
|
||||||
find_package(LibLZMA QUIET)
|
find_package(LibLZMA QUIET)
|
||||||
|
find_package(LibXml2 QUIET)
|
||||||
|
find_package(EXPAT QUIET)
|
||||||
target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR})
|
target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR})
|
||||||
target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES})
|
target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES})
|
||||||
if (BZIP2_LIBRARIES)
|
if (BZIP2_LIBRARIES)
|
||||||
@@ -36,4 +38,10 @@ function(LinkLibArchive TARGET)
|
|||||||
if (LIBLZMA_LIBRARIES)
|
if (LIBLZMA_LIBRARIES)
|
||||||
target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES})
|
target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
if (LibXml2_FOUND)
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${LIBXML2_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
if (EXPAT_FOUND)
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${EXPAT_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|||||||
@@ -41,13 +41,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/TryCompileShaders.cmake.in ${CM
|
|||||||
execute_process(COMMAND ${BASH_EXECUTABLE} CompileShaders.sh "${SHADER_OUTPUT_DEST}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Scripts)
|
execute_process(COMMAND ${BASH_EXECUTABLE} CompileShaders.sh "${SHADER_OUTPUT_DEST}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Scripts)
|
||||||
file(GLOB GENERATED_SHADER_SOURCES "${SHADER_OUTPUT_DEST}/*")
|
file(GLOB GENERATED_SHADER_SOURCES "${SHADER_OUTPUT_DEST}/*")
|
||||||
|
|
||||||
if(IOS)
|
if(APPLE)
|
||||||
set(CMAKE_Swift_LANGUAGE_VERSION 5.0)
|
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.mm" "openVulkanoCpp/*.m" "openVulkanoCpp/*.c" "openVulkanoCpp/*.cpp" "examples/*.hpp" "examples/*.cpp")
|
||||||
enable_language(Swift)
|
add_executable(openVulkanoCpp examples/main.cpp ${resources} ${GENERATED_SHADER_SOURCES})
|
||||||
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.mm" "openVulkanoCpp/*.m" "openVulkanoCpp/*.c" "openVulkanoCpp/*.cpp" "openVulkanoCpp/*.swift")
|
|
||||||
|
|
||||||
file(GLOB_RECURSE resources CONFIGURE_DEPENDS "openVulkanoCpp/*.storyboard" "openVulkanoCpp/*.xib")
|
|
||||||
add_executable(openVulkanoCpp examples/main.m ${resources})
|
|
||||||
else()
|
else()
|
||||||
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.h" "openVulkanoCpp/*.c" "openVulkanoCpp/*.hpp" "openVulkanoCpp/*.cpp" "examples/*.hpp" "examples/*.cpp")
|
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.h" "openVulkanoCpp/*.c" "openVulkanoCpp/*.hpp" "openVulkanoCpp/*.cpp" "examples/*.hpp" "examples/*.cpp")
|
||||||
file(GLOB SHADER_SRC_FILES ${ROOT_FOLDER}/openVulkanoCpp/Shader/*)
|
file(GLOB SHADER_SRC_FILES ${ROOT_FOLDER}/openVulkanoCpp/Shader/*)
|
||||||
@@ -74,7 +70,8 @@ if(IOS)
|
|||||||
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
|
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
|
||||||
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.1") # The used ARKit features are only available starting with iOS 14
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.1") # The used ARKit features are only available starting with iOS 14
|
||||||
|
endif()
|
||||||
|
if(APPLE)
|
||||||
LinkAppleFrameworks(openVulkanoCpp)
|
LinkAppleFrameworks(openVulkanoCpp)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ function(LinkAppleFrameworks TARGET)
|
|||||||
PUBLIC "-framework CoreVideo"
|
PUBLIC "-framework CoreVideo"
|
||||||
PUBLIC "-framework Metal"
|
PUBLIC "-framework Metal"
|
||||||
PUBLIC "-framework MetalPerformanceShaders"
|
PUBLIC "-framework MetalPerformanceShaders"
|
||||||
PUBLIC "-framework ARKit"
|
|
||||||
PUBLIC "-lstdc++"
|
PUBLIC "-lstdc++"
|
||||||
PUBLIC c++
|
PUBLIC c++
|
||||||
PUBLIC c
|
PUBLIC c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(IOS)
|
||||||
|
target_link_libraries(${TARGET} PUBLIC "-framework ARKit")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Locate system libraries on iOS
|
# Locate system libraries on iOS
|
||||||
find_library(UIKIT UIKit)
|
find_library(UIKIT UIKit)
|
||||||
@@ -19,11 +21,20 @@ function(LinkAppleFrameworks TARGET)
|
|||||||
find_library(MOBILECORESERVICES MobileCoreServices)
|
find_library(MOBILECORESERVICES MobileCoreServices)
|
||||||
find_library(CFNETWORK CFNetwork)
|
find_library(CFNETWORK CFNetwork)
|
||||||
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
||||||
|
find_library(APPKIT AppKit)
|
||||||
|
find_library(IOSURFACE IOSurface)
|
||||||
|
find_library(QUARTZ Quartz)
|
||||||
|
|
||||||
# link the frameworks located above
|
# link the frameworks located above
|
||||||
target_link_libraries(${TARGET} PUBLIC ${UIKIT})
|
if(IOS)
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${UIKIT})
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${MOBILECORESERVICES})
|
||||||
|
else()
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${APPKIT})
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${IOSURFACE})
|
||||||
|
target_link_libraries(${TARGET} PUBLIC ${QUARTZ})
|
||||||
|
endif()
|
||||||
target_link_libraries(${TARGET} PUBLIC ${FOUNDATION})
|
target_link_libraries(${TARGET} PUBLIC ${FOUNDATION})
|
||||||
target_link_libraries(${TARGET} PUBLIC ${MOBILECORESERVICES})
|
|
||||||
target_link_libraries(${TARGET} PUBLIC ${CFNETWORK})
|
target_link_libraries(${TARGET} PUBLIC ${CFNETWORK})
|
||||||
target_link_libraries(${TARGET} PUBLIC ${SYSTEMCONFIGURATION})
|
target_link_libraries(${TARGET} PUBLIC ${SYSTEMCONFIGURATION})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
@@ -2,8 +2,13 @@ function(FilterPlatformPaths sourcesVar)
|
|||||||
|
|
||||||
if (IOS)
|
if (IOS)
|
||||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*GLFW.*")
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*GLFW.*")
|
||||||
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]MacOS[\\/].*")
|
||||||
else ()
|
else ()
|
||||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]iOS[\\/].*")
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]iOS[\\/].*")
|
||||||
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]AR[\\/]Provider[\\/]ArKit[\\/].*")
|
||||||
|
endif ()
|
||||||
|
if (NOT APPLE)
|
||||||
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]Apple[\\/].*")
|
||||||
endif ()
|
endif ()
|
||||||
if (NOT LINUX)
|
if (NOT LINUX)
|
||||||
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]Linux[\\/].*")
|
list(FILTER ${sourcesVar} EXCLUDE REGEX ".*[\\/]Host[\\/]Linux[\\/].*")
|
||||||
@@ -15,4 +20,4 @@ function(FilterPlatformPaths sourcesVar)
|
|||||||
list(FILTER ${sourcesVar} EXCLUDE REGEX "main\.(m|mm|c|cpp)")
|
list(FILTER ${sourcesVar} EXCLUDE REGEX "main\.(m|mm|c|cpp)")
|
||||||
|
|
||||||
set(${sourcesVar} ${${sourcesVar}} PARENT_SCOPE)
|
set(${sourcesVar} ${${sourcesVar}} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
@@ -8,7 +8,12 @@
|
|||||||
#include "Provider/Playback/ArSessionPlayback.hpp"
|
#include "Provider/Playback/ArSessionPlayback.hpp"
|
||||||
#include "Provider/Network/ArSessionStream.h"
|
#include "Provider/Network/ArSessionStream.h"
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#if TARGET_OS_MAC
|
||||||
|
#include "Provider/ArSessionNull.hpp"
|
||||||
|
#else
|
||||||
#include "Provider/ArKit/ArSessionArKit.h"
|
#include "Provider/ArKit/ArSessionArKit.h"
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
#include "Provider/ArCore/ArSessionArCore.h"
|
#include "Provider/ArCore/ArSessionArCore.h"
|
||||||
|
|||||||
183
openVulkanoCpp/Host/MacOS/SystemInfo.mm
Normal file
183
openVulkanoCpp/Host/MacOS/SystemInfo.mm
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Host/SystemInfo.hpp"
|
||||||
|
#include "Base/Logger.hpp"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#include <mach/mach.h>
|
||||||
|
#include <os/proc.h>
|
||||||
|
|
||||||
|
#import <Foundation/NSString.h>
|
||||||
|
#import <Foundation/NSProcessInfo.h>
|
||||||
|
|
||||||
|
namespace OpenVulkano
|
||||||
|
{
|
||||||
|
Event<> SystemInfo::OnLowPowerModeChanged;
|
||||||
|
Event<> SystemInfo::OnBatteryStateChanged;
|
||||||
|
Event<> SystemInfo::OnBatteryLevelChanged;
|
||||||
|
Event<> SystemInfo::OnDeviceOrientationChanged;
|
||||||
|
|
||||||
|
size_t SystemInfo::GetSystemRam()
|
||||||
|
{
|
||||||
|
return [NSProcessInfo processInfo].physicalMemory;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetSystemRamAvailable()
|
||||||
|
{
|
||||||
|
return 0; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetAppRamMax()
|
||||||
|
{
|
||||||
|
return GetAppRamAvailable() + GetAppRamUsed();
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetAppVirtualMemoryMax()
|
||||||
|
{
|
||||||
|
return INT64_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetAppRamAvailable()
|
||||||
|
{
|
||||||
|
return 0; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetAppRamUsed()
|
||||||
|
{
|
||||||
|
struct task_basic_info info;
|
||||||
|
mach_msg_type_number_t size = sizeof(info);
|
||||||
|
kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
|
||||||
|
if( kerr == KERN_SUCCESS )
|
||||||
|
{
|
||||||
|
return info.resident_size;
|
||||||
|
}
|
||||||
|
Logger::PERF->error("Failed to read memory consumption: {}", mach_error_string(kerr));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetUserName()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetHostName()
|
||||||
|
{
|
||||||
|
return [[NSProcessInfo processInfo].hostName UTF8String];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetDeviceName()
|
||||||
|
{
|
||||||
|
return "Mac"; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetDeviceVendorName()
|
||||||
|
{
|
||||||
|
return "Apple";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetDeviceModelName()
|
||||||
|
{
|
||||||
|
return ""; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetOsName()
|
||||||
|
{
|
||||||
|
return ""; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
OsVersion SystemInfo::GetOsVersion()
|
||||||
|
{
|
||||||
|
NSOperatingSystemVersion osVersion = [NSProcessInfo processInfo].operatingSystemVersion;
|
||||||
|
return { static_cast<int>(osVersion.majorVersion), static_cast<int>(osVersion.minorVersion), static_cast<int>(osVersion.patchVersion), 0 };
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SystemInfo::GetOsNameHumanReadable()
|
||||||
|
{
|
||||||
|
std::stringstream name;
|
||||||
|
name << GetOsName() << ' ' << GetOsVersion().major;
|
||||||
|
return name.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceType SystemInfo::GetDeviceType()
|
||||||
|
{
|
||||||
|
return DeviceType::PC;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetCpuCoreCount()
|
||||||
|
{
|
||||||
|
return [NSProcessInfo processInfo].processorCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t SystemInfo::GetCpuThreadCount()
|
||||||
|
{
|
||||||
|
return [NSProcessInfo processInfo].activeProcessorCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t SystemInfo::GetCpuTemperature()
|
||||||
|
{
|
||||||
|
switch([NSProcessInfo processInfo].thermalState)
|
||||||
|
{
|
||||||
|
case NSProcessInfoThermalStateNominal: return 20;
|
||||||
|
case NSProcessInfoThermalStateFair: return 50;
|
||||||
|
case NSProcessInfoThermalStateSerious: return 80;
|
||||||
|
case NSProcessInfoThermalStateCritical: return 100;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
CpuThermalState SystemInfo::GetCpuThermalState()
|
||||||
|
{
|
||||||
|
switch([NSProcessInfo processInfo].thermalState)
|
||||||
|
{
|
||||||
|
case NSProcessInfoThermalStateNominal: return CpuThermalState::Normal;
|
||||||
|
case NSProcessInfoThermalStateFair: return CpuThermalState::Fair;
|
||||||
|
case NSProcessInfoThermalStateSerious: return CpuThermalState::Serious;
|
||||||
|
case NSProcessInfoThermalStateCritical: return CpuThermalState::Critical;
|
||||||
|
}
|
||||||
|
return CpuThermalState::Normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SystemInfo::IsDeviceInLowPowerMode()
|
||||||
|
{
|
||||||
|
return [NSProcessInfo processInfo].lowPowerModeEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SystemInfo::EnableEnergyEvents()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
BatteryState SystemInfo::GetDeviceBatteryState()
|
||||||
|
{
|
||||||
|
return BatteryState::Unavailable; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
float SystemInfo::GetDeviceBatteryLevel()
|
||||||
|
{
|
||||||
|
return 0; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SystemInfo::IsMultitaskingSupported()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceOrientation SystemInfo::GetDeviceOrientation()
|
||||||
|
{
|
||||||
|
return DeviceOrientation::LandscapeRight;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SystemInfo::EnableDeviceOrientationEvents()
|
||||||
|
{
|
||||||
|
//TODO?
|
||||||
|
}
|
||||||
|
|
||||||
|
InterfaceOrientation SystemInfo::GetInterfaceOrientation()
|
||||||
|
{
|
||||||
|
return InterfaceOrientation::Landscape; //TODO?
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user