From e4fea3be6a14cf94ec90f93321a738583d054ab4 Mon Sep 17 00:00:00 2001 From: hissingshark Date: Fri, 15 Jun 2018 21:29:56 +0100 Subject: [PATCH 1/3] Added Vulkan disable and forced CPU detection options --- CMakeLists.txt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ae5fa9024..b009b7d76f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,11 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") message("Clang enabled") endif() +if(FORCED_CPU) + message("Detected CPU (${CMAKE_SYSTEM_PROCESSOR}) overridden as: ${FORCED_CPU}") + set(CMAKE_SYSTEM_PROCESSOR ${FORCED_CPU}) +endif() + # Detect CPU from CMAKE configuration. Toolchains should set this up if(CMAKE_SYSTEM_PROCESSOR) if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm") @@ -75,10 +80,15 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Android") endif() # We only support Vulkan on Unix, Android and Windows. -if(ANDROID OR WIN32 OR (UNIX AND NOT APPLE)) - set(VULKAN ON) +if(DISABLE_VULKAN) + set(VULKAN OFF) + message("Vulkan disabled") else() - add_definitions(-DNO_VULKAN) + if(ANDROID OR WIN32 OR (UNIX AND NOT APPLE)) + set(VULKAN ON) + else() + add_definitions(-DNO_VULKAN) + endif() endif() if(NOT DEFINED HEADLESS) @@ -122,6 +132,7 @@ option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_F option(USE_SYSTEM_LIBZIP "Dynamically link against system libzip" ${USE_SYSTEM_LIBZIP}) option(USE_WAYLAND_WSI "Set to ON to require Wayland support for Vulkan" ${USE_WAYLAND_WSI}) option(USE_ADDRESS_SANITIZER "Use Clang memory sanitizer" ${USE_ADDRESS_SANITIZER}) +option(DISABLE_VULKAN "Set to ON to if building for Vulkan is unsupported" ${DISABLE_VULKAN}) if(UNIX AND NOT (APPLE OR ANDROID) AND VULKAN) add_definitions(-DVK_USE_PLATFORM_XLIB_KHR) From d1f116356fcce17c48e5637fe723e5922ed3ecb5 Mon Sep 17 00:00:00 2001 From: hissingshark Date: Tue, 19 Jun 2018 21:44:55 +0100 Subject: [PATCH 2/3] Changed cmake option to exclude X11 rather than Vulkan itself. --- CMakeLists.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b009b7d76f..80be1d28d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,15 +80,10 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Android") endif() # We only support Vulkan on Unix, Android and Windows. -if(DISABLE_VULKAN) - set(VULKAN OFF) - message("Vulkan disabled") +if(ANDROID OR WIN32 OR (UNIX AND NOT APPLE)) + set(VULKAN ON) else() - if(ANDROID OR WIN32 OR (UNIX AND NOT APPLE)) - set(VULKAN ON) - else() - add_definitions(-DNO_VULKAN) - endif() + add_definitions(-DNO_VULKAN) endif() if(NOT DEFINED HEADLESS) @@ -119,6 +114,7 @@ option(USING_EGL "Set to ON if target environment uses EGL" ${USING_EGL}) option(USING_FBDEV "Set to ON if target environment uses fbdev (eg. Pandora)" ${USING_FBDEV}) option(USING_GLES2 "Set to ON if target device uses OpenGL ES 2.0" ${USING_GLES2}) option(RASPBIAN "Set to ON to workaround threading issues when building for ARMV7 on Raspbian" ${RASPBIAN}) +option(USING_X11_VULKAN "Set to ON if target environment uses X11 for Vulkan" ${USING_X11_VULKAN}) # :: Frontends option(USING_QT_UI "Set to ON if you wish to use the Qt frontend wrapper" ${USING_QT_UI}) option(MOBILE_DEVICE "Set to ON when targeting a mobile device" ${MOBILE_DEVICE}) @@ -132,10 +128,14 @@ option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_F option(USE_SYSTEM_LIBZIP "Dynamically link against system libzip" ${USE_SYSTEM_LIBZIP}) option(USE_WAYLAND_WSI "Set to ON to require Wayland support for Vulkan" ${USE_WAYLAND_WSI}) option(USE_ADDRESS_SANITIZER "Use Clang memory sanitizer" ${USE_ADDRESS_SANITIZER}) -option(DISABLE_VULKAN "Set to ON to if building for Vulkan is unsupported" ${DISABLE_VULKAN}) if(UNIX AND NOT (APPLE OR ANDROID) AND VULKAN) - add_definitions(-DVK_USE_PLATFORM_XLIB_KHR) + if(USING_X11_VULKAN) + message("Using X11 for Vulkan") + add_definitions(-DVK_USE_PLATFORM_XLIB_KHR) + else() + message("NOT using X11 for Vulkan") + endif() # add_definitions(-DVK_USE_PLATFORM_XCB_KHR) find_package(Wayland) if (USE_WAYLAND_WSI AND NOT WAYLAND_FOUND) From 90fbbaba1ab7d6c78e2180371a9834d7789c8a3c Mon Sep 17 00:00:00 2001 From: hissingshark Date: Wed, 27 Jun 2018 12:48:59 +0100 Subject: [PATCH 3/3] Made X11-Vulkan default. Provided explanatory toolchain file as overriding is more complex. --- CMakeLists.txt | 2 +- cmake/Toolchains/vero4k.armv8.cmake | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 cmake/Toolchains/vero4k.armv8.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 80be1d28d1..bffaa11320 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,7 +114,7 @@ option(USING_EGL "Set to ON if target environment uses EGL" ${USING_EGL}) option(USING_FBDEV "Set to ON if target environment uses fbdev (eg. Pandora)" ${USING_FBDEV}) option(USING_GLES2 "Set to ON if target device uses OpenGL ES 2.0" ${USING_GLES2}) option(RASPBIAN "Set to ON to workaround threading issues when building for ARMV7 on Raspbian" ${RASPBIAN}) -option(USING_X11_VULKAN "Set to ON if target environment uses X11 for Vulkan" ${USING_X11_VULKAN}) +option(USING_X11_VULKAN "Set to OFF if target environment doesn't use X11 for Vulkan" ON) # :: Frontends option(USING_QT_UI "Set to ON if you wish to use the Qt frontend wrapper" ${USING_QT_UI}) option(MOBILE_DEVICE "Set to ON when targeting a mobile device" ${MOBILE_DEVICE}) diff --git a/cmake/Toolchains/vero4k.armv8.cmake b/cmake/Toolchains/vero4k.armv8.cmake new file mode 100644 index 0000000000..28720127b3 --- /dev/null +++ b/cmake/Toolchains/vero4k.armv8.cmake @@ -0,0 +1,22 @@ +include_directories(SYSTEM + /opt/vero3/include + /opt/vero3/include/EGL + /opt/vero3/include/GLES2 +) + +set(ARCH_FLAGS "-march=armv8-a+crc -mtune=cortex-a53 -mfloat-abi=hard -funsafe-math-optimizations") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_FLAGS}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_FLAGS}" CACHE STRING "" FORCE) +set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${ARCH_FLAGS}" CACHE STRING "" FORCE) + +set(CMAKE_EXE_LINKER_FLAGS "-L/opt/vero3/lib" CACHE STRING "" FORCE) + +set(OPENGL_LIBRARIES /opt/vero3/lib/libGLESv2.so) +set(EGL_LIBRARIES /opt/vero3/lib/libEGL.so) + +set(USING_GLES2 ON) +set(USING_EGL ON) +set(USING_FBDEV ON) +set(ARMV7 ON) +set(FORCED_CPU armv7) +set(USING_X11_VULKAN OFF CACHE BOOL "" FORCE)