From ad155da67ab7f39a07015f5a14a1d2a47870b656 Mon Sep 17 00:00:00 2001 From: "Chodor, Jaroslaw" Date: Tue, 28 May 2024 03:16:24 +0000 Subject: [PATCH] feature: Enabling platforms in ocloc by default This feature enables supported platforms in ocloc even if not enabled for driver. Allows sharing single ocloc instance for multiple driver-platform configurations Related-To: NEO-10531 Signed-off-by: Chodor, Jaroslaw --- CMakeLists.txt | 7 +- cmake/setup_platform_flags.cmake | 8 +- platforms.cmake | 8 ++ shared/offline_compiler/source/CMakeLists.txt | 101 +++++++++++++++++- .../source/helpers/product_config_helper.cpp | 2 + 5 files changed, 119 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e43b4ad76..72b404e90c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -489,8 +489,13 @@ endif() # We want to organize our IDE targets into folders set_property(GLOBAL PROPERTY USE_FOLDERS ON) -# Get available platfroms +# Get available platforms include(platforms.cmake) +list(LENGTH ALL_PRODUCT_FAMILY_LIST ALL_PRODUCT_FAMILY_LIST_COUNT) +if(1 EQUAL ${ALL_PRODUCT_FAMILY_LIST_COUNT}) + SET(NEO_SINGLE_SKU_BUILD TRUE) + message(STATUS "Single Sku Build detected") +endif() if(WIN32) set(DISABLE_WDDM_LINUX TRUE) diff --git a/cmake/setup_platform_flags.cmake b/cmake/setup_platform_flags.cmake index d3e238c928..72d7b6d3d9 100644 --- a/cmake/setup_platform_flags.cmake +++ b/cmake/setup_platform_flags.cmake @@ -4,6 +4,10 @@ # SPDX-License-Identifier: MIT # +if(NEO_SKIP_BASE_PLATFORMS) + return() +endif() + if(NOT NEO_ALLOW_LEGACY_PLATFORMS_SUPPORT) if(WIN32) DISABLE_FLAGS_FOR("GEN8" "BDW") @@ -61,9 +65,9 @@ foreach(CORE_TYPE ${PVC_AND_LATER_CORE_TYPES}) endforeach() if(SUPPORT_ARL) - set(SUPPORT_MTL TRUE CACHE BOOL "Support MTL/ARL devices" FORCE) + ENABLE_ADDITIONAL_SKU("MTL") if(TESTS_ARL) - set(TESTS_MTL TRUE CACHE BOOL "Tests MTL/ARL devices" FORCE) + TEST_ADDITIONAL_SKU("MTL") endif() endif() diff --git a/platforms.cmake b/platforms.cmake index f527533aab..c73fc419c4 100644 --- a/platforms.cmake +++ b/platforms.cmake @@ -230,6 +230,14 @@ macro(ADD_PLATFORM_FOR_CORE_TYPE LIST_TYPE CORE_TYPE PLATFORM_NAME) endif() endmacro() +macro(ENABLE_ADDITIONAL_SKU SKU_NAME) + set(SUPPORT_${SKU_NAME} TRUE CACHE BOOL "Support ${SKU_NAME}" FORCE) +endmacro() + +macro(TEST_ADDITIONAL_SKU SKU_NAME) + set(TESTS_${SKU_NAME} TRUE CACHE BOOL "Build ULTs for ${SKU_NAME}" FORCE) +endmacro() + macro(ADD_AOT_DEFINITION CONFIG_NAME) list(APPEND AOT_DEFINITIONS "SUPPORT_AOT_${CONFIG_NAME}") endmacro() diff --git a/shared/offline_compiler/source/CMakeLists.txt b/shared/offline_compiler/source/CMakeLists.txt index 41e8759ab0..00d8433367 100644 --- a/shared/offline_compiler/source/CMakeLists.txt +++ b/shared/offline_compiler/source/CMakeLists.txt @@ -171,7 +171,91 @@ else() ) endif() -string(REPLACE ";" "," ALL_SUPPORTED_PRODUCT_FAMILIES "${ALL_SUPPORTED_PRODUCT_FAMILY}") +set(ALL_OCLOC_PRODUCT_FAMILY "") +set(ALL_OCLOC_PRODUCT_TO_PRODUCT_FAMILY "") +set(OCLOC_SUPPORTED_CORE_FLAGS_DEFINITONS "") + +get_cmake_property(OCLOC_SUPPORT_VARS VARIABLES) +list(FILTER OCLOC_SUPPORT_VARS INCLUDE REGEX "OCLOC_SUPPORT_.+") +foreach(OCLOC_SUPPORT_VAR ${OCLOC_SUPPORT_VARS}) + string(REPLACE "OCLOC_SUPPORT_" "SUPPORT_" SUPPORT_VAR ${OCLOC_SUPPORT_VAR}) + set(${SUPPORT_VAR} ${${OCLOC_SUPPORT_VAR}}) +endforeach() + +macro(SET_FLAGS_FOR CORE_TYPE) + foreach(SKU_NAME ${ARGN}) + if(SUPPORT_${SKU_NAME} OR NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC) + if(NOT SUPPORT_${CORE_TYPE}) + message(STATUS "Auto-Enabling ${CORE_TYPE} support for ${SKU_NAME} in ocloc") + set(SUPPORT_${CORE_TYPE} TRUE) + endif() + endif() + string(TOLOWER ${CORE_TYPE} MAP_${SKU_NAME}_CORE_lower) + string(TOLOWER ${SKU_NAME} MAP_${SKU_NAME}_lower) + set(MAP_${SKU_NAME}_CORE_lower "${CORE_PREFIX}${MAP_${SKU_NAME}_CORE_lower}${CORE_SUFFIX}") + set(MAP_${SKU_NAME}_lower ${MAP_${SKU_NAME}_lower}) + endforeach() + + if(NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC) + set(SUPPORT_${CORE_TYPE} TRUE) + elseif(NOT SUPPORT_${CORE_TYPE}) + set(SUPPORT_${CORE_TYPE} ${SUPPORT_GEN_DEFAULT}) + endif() + + if(SUPPORT_${CORE_TYPE} OR NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC) + list(APPEND ALL_SUPPORTED_CORE_FAMILIES ${CORE_TYPE}) + list(REMOVE_DUPLICATES ALL_SUPPORTED_CORE_FAMILIES) + + foreach(${CORE_TYPE}_PLATFORM ${ARGN}) + if(NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC) + set(SUPPORT_${${CORE_TYPE}_PLATFORM} TRUE) + elseif(NOT SUPPORT_${${CORE_TYPE}_PLATFORM}) + set(SUPPORT_${${CORE_TYPE}_PLATFORM} ${SUPPORT_PLATFORM_DEFAULT}) + endif() + endforeach() + endif() +endmacro() + +macro(ADD_PRODUCT TYPE PRODUCT ITEM) + if(${TYPE} MATCHES "SUPPORTED") + list(APPEND ALL_OCLOC_PRODUCT_FAMILY ${ITEM}) + list(APPEND ALL_OCLOC_PRODUCT_TO_PRODUCT_FAMILY ${PRODUCT}) + endif() +endmacro() + +macro(ENABLE_ADDITIONAL_SKU SKU_NAME) + set(SUPPORT_${SKU_NAME} TRUE) +endmacro() + +macro(TEST_ADDITIONAL_SKU SKU_NAME) +endmacro() + +macro(DISABLE_WDDM_LINUX_FOR SKU_NAME) +endmacro() + +macro(DISABLE_FLAGS_FOR CORE_TYPE) + set(SUPPORT_${CORE_TYPE} FALSE) + foreach(SKU_NAME ${ARGN}) + set(SUPPORT_${SKU_NAME} FALSE) + endforeach() +endmacro() +if(NOT NEO_SINGLE_SKU_BUILD) + set(NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC TRUE) +endif() +include(${NEO_SOURCE_DIR}/cmake/setup_platform_flags.cmake) + +unset(NEO_FORCE_ENABLE_PLATFORMS_FOR_OCLOC) +set(NEO_SKIP_BASE_PLATFORMS TRUE) +if(NOT ${NEO_SOURCE_DIR}/cmake/setup_platform_flags.cmake MATCHES ${NEO_SOURCE_DIR}/cmake${BRANCH_DIR_SUFFIX}setup_platform_flags.cmake) + include(${NEO_SOURCE_DIR}/cmake${BRANCH_DIR_SUFFIX}setup_platform_flags.cmake) +endif() + +message(STATUS "[OCLOC] All supported platforms: ${ALL_OCLOC_PRODUCT_TO_PRODUCT_FAMILY}") +foreach(PRODUCT ${ALL_OCLOC_PRODUCT_TO_PRODUCT_FAMILY}) + add_definitions("-DSUPPORT_${PRODUCT}") +endforeach() + +string(REPLACE ";" "," ALL_SUPPORTED_PRODUCT_FAMILIES "${ALL_OCLOC_PRODUCT_FAMILY}") set(CLOC_LIB_LIB_FLAGS_DEFINITIONS -DCIF_HEADERS_ONLY_BUILD @@ -180,9 +264,16 @@ set(CLOC_LIB_LIB_FLAGS_DEFINITIONS set(NEO_SHARED_COREX_CPP_FILES hw_info + enable ) macro(macro_for_each_platform) + list(APPEND OCLOC_SUPPORTED_CORE_FLAGS_DEFINITONS "-DSUPPORT_${PLATFORM_IT}") + if(EXISTS ${NEO_SHARED_DIRECTORY}/${CORE_TYPE_LOWER}/definitions${BRANCH_DIR_SUFFIX}) + include_directories(${NEO_SHARED_DIRECTORY}/${CORE_TYPE_LOWER}/definitions${BRANCH_DIR_SUFFIX}) + elseif(EXISTS ${NEO_SHARED_DIRECTORY}/${CORE_TYPE_LOWER}/definitions) + include_directories(${NEO_SHARED_DIRECTORY}/${CORE_TYPE_LOWER}/definitions) + endif() foreach(BRANCH_DIR ${BRANCH_DIR_LIST}) foreach(BRANCH ${BRANCH_DIR_LIST}) foreach(SRC_FILE ${NEO_SOURCE_DIR}/shared/source${BRANCH}${CORE_TYPE_LOWER}/definitions${BRANCH_DIR_SUFFIX}hw_info_setup_${PLATFORM_IT_LOWER}.inl @@ -193,11 +284,13 @@ macro(macro_for_each_platform) ${NEO_SOURCE_DIR}/shared/source${BRANCH}${CORE_TYPE_LOWER}${BRANCH_DIR}enable_compiler_product_helper_${PLATFORM_IT_LOWER}.cpp ${NEO_SOURCE_DIR}/shared/source/ail${BRANCH_DIR}${CORE_TYPE_LOWER}${BRANCH}${PLATFORM_IT_LOWER}/ail_configuration_${PLATFORM_IT_LOWER}.cpp ) + if(${SRC_FILE} IN_LIST CLOC_LIB_SRCS_LIB) + continue() + endif() if(EXISTS ${SRC_FILE}) list(APPEND CLOC_LIB_SRCS_LIB ${SRC_FILE}) endif() endforeach() - if(WIN32) set(SRC_FILE ${NEO_SOURCE_DIR}/shared/source${BRANCH}${CORE_TYPE_LOWER}${BRANCH_DIR}windows/hw_info_extra_${PLATFORM_IT_LOWER}.cpp) if(EXISTS ${SRC_FILE}) @@ -209,12 +302,12 @@ macro(macro_for_each_platform) list(APPEND CLOC_LIB_SRCS_LIB ${SRC_FILE}) endif() endif() - endforeach() endforeach() endmacro() macro(macro_for_each_core_type) + list(APPEND OCLOC_SUPPORTED_CORE_FLAGS_DEFINITONS "-DSUPPORT_${CORE_TYPE}") foreach(SRC_IT ${NEO_SHARED_COREX_CPP_FILES}) foreach(BRANCH_DIR ${BRANCH_DIR_LIST}) foreach(BRANCH ${BRANCH_DIR_LIST}) @@ -266,7 +359,7 @@ endif() target_include_directories(${OCLOC_NAME}_lib BEFORE PRIVATE ${CLOC_LIB_INCLUDES}) target_include_directories(${OCLOC_NAME}_lib BEFORE PRIVATE ${IGA_INCLUDE_DIR}) -target_compile_definitions(${OCLOC_NAME}_lib PUBLIC ${CLOC_LIB_LIB_FLAGS_DEFINITIONS} ${SUPPORTED_CORE_FLAGS_DEFINITONS} DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM} +target_compile_definitions(${OCLOC_NAME}_lib PUBLIC ${CLOC_LIB_LIB_FLAGS_DEFINITIONS} ${OCLOC_SUPPORTED_CORE_FLAGS_DEFINITONS} DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM} IGA_LIBRARY_NAME="${CMAKE_SHARED_LIBRARY_PREFIX}${IGA_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}" ${AOT_DEFINITIONS} ) diff --git a/shared/source/helpers/product_config_helper.cpp b/shared/source/helpers/product_config_helper.cpp index 45d759d3bd..6a9a966e39 100644 --- a/shared/source/helpers/product_config_helper.cpp +++ b/shared/source/helpers/product_config_helper.cpp @@ -7,6 +7,8 @@ #include "shared/source/helpers/product_config_helper.h" +#include "shared/source/helpers/hw_info.h" + #include "device_ids_configs.h" #include "hw_cmds.h" #include "platforms.h"