From 9cb1c71dcdff212c348c12567263a41c5803ace6 Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Tue, 27 Apr 2021 19:27:29 +0100 Subject: [PATCH 1/1] Windows build fixes Change-Id: I8ce0746a5119df1df855d7980285e9bcf465f679 --- .../src/dali-scene-loader/CMakeLists.txt | 1 + .../dali-scene-loader/utc-Dali-MeshDefinition.cpp | 101 +++++++++++++++++++++ build/tizen/CMakeLists.txt | 6 ++ build/tizen/dali-scene-loader/CMakeLists.txt | 17 +++- dali-scene-loader/public-api/mesh-definition.cpp | 4 +- 5 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 automated-tests/src/dali-scene-loader/utc-Dali-MeshDefinition.cpp diff --git a/automated-tests/src/dali-scene-loader/CMakeLists.txt b/automated-tests/src/dali-scene-loader/CMakeLists.txt index f0d84fb..693db47 100755 --- a/automated-tests/src/dali-scene-loader/CMakeLists.txt +++ b/automated-tests/src/dali-scene-loader/CMakeLists.txt @@ -16,6 +16,7 @@ SET(TC_SOURCES utc-Dali-Gltf2Loader.cpp utc-Dali-KtxLoader.cpp utc-Dali-MatrixStack.cpp + utc-Dali-MeshDefinition.cpp utc-Dali-NodeDefinition.cpp utc-Dali-RendererState.cpp utc-Dali-ResourceBundle.cpp diff --git a/automated-tests/src/dali-scene-loader/utc-Dali-MeshDefinition.cpp b/automated-tests/src/dali-scene-loader/utc-Dali-MeshDefinition.cpp new file mode 100644 index 0000000..37c170b --- /dev/null +++ b/automated-tests/src/dali-scene-loader/utc-Dali-MeshDefinition.cpp @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include + +#include "dali-scene-loader/public-api/mesh-definition.h" +#include + +using namespace Dali; +using namespace Dali::SceneLoader; + +int UtcDaliMeshDefinitionBlobApplyMinMaxBothMinMaxApplied(void) +{ + using Container = std::vector; + + Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; + Container minValues = { 5.0f }; + Container maxValues = { 10.0f }; + Container result = {5.0f, 6.0f, 8.0f, 10.0f, 10.0f}; + + MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); + + for( auto i = 0u; i < result.size(); ++i) + { + DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); + } + + END_TEST; +} + +int UtcDaliMeshDefinitionBlobApplyMinMaxOnlyMin(void) +{ + using Container = std::vector; + + Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; + Container minValues = { 5.0f }; + Container maxValues = {}; + Container result = {5.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + + MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); + + for( auto i = 0u; i < result.size(); ++i) + { + DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); + } + + END_TEST; +} + +int UtcDaliMeshDefinitionBlobApplyMinMaxOnlyMax(void) +{ + using Container = std::vector; + + Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; + Container minValues = { }; + Container maxValues = { 10.0f }; + Container result = {4.0f, 6.0f, 8.0f, 10.0f, 10.0f}; + + MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); + + for( auto i = 0u; i < result.size(); ++i) + { + DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); + } + + END_TEST; +} + +int UtcDaliMeshDefinitionBlobApplyMinMaxBothEmpty(void) +{ + using Container = std::vector; + + Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; + Container minValues; + Container maxValues; + Container result = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + + MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); + + for( auto i = 0u; i < result.size(); ++i) + { + DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); + } + + END_TEST; +} + diff --git a/build/tizen/CMakeLists.txt b/build/tizen/CMakeLists.txt index 1308a3f..00dd771 100644 --- a/build/tizen/CMakeLists.txt +++ b/build/tizen/CMakeLists.txt @@ -295,6 +295,12 @@ SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES SET(SHADER_GENERATOR_NAME dali-shader-generator) SET(SHADER_GENERATOR_SOURCES ${ROOT_SRC_DIR}/dali-toolkit/shader-generator/shader-generator.cpp) +IF(WIN32) + # Allows execution of the shader generator executable as if it's in the cmake build directory rather + # than a Debug or Release subdirectory + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +ENDIF() + IF(NOT ANDROID) ADD_EXECUTABLE(${SHADER_GENERATOR_NAME} ${SHADER_GENERATOR_SOURCES}) INSTALL(TARGETS ${SHADER_GENERATOR_NAME} RUNTIME DESTINATION bin) diff --git a/build/tizen/dali-scene-loader/CMakeLists.txt b/build/tizen/dali-scene-loader/CMakeLists.txt index 7789dda..8891e9d 100644 --- a/build/tizen/dali-scene-loader/CMakeLists.txt +++ b/build/tizen/dali-scene-loader/CMakeLists.txt @@ -14,6 +14,8 @@ if(CMAKE_BUILD_TYPE MATCHES Debug) add_definitions("-DDEBUG_ENABLED") endif() +ADD_DEFINITIONS( "-DBUILDING_DALI_SCENE_LOADER" ) + foreach(flag ${PKGS_CFLAGS}) set(extra_flags "${extra_flags} ${flag}") endforeach(flag) @@ -86,10 +88,21 @@ SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_SHADER_DIR}/generated/" "${GENERATED_SHADER_DIR}/builtin-shader-extern-gen.h") +IF( WIN32) + # When Using VCPKG, the default is always set to Debug if CMAKE_BUILD_TYPE is not set + IF( NOT CMAKE_BUILD_TYPE ) + SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../Debug/${SHADER_GENERATOR_NAME}) + ELSE() + SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/${SHADER_GENERATOR_NAME}) + ENDIF() +ELSE() + SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../${SHADER_GENERATOR_NAME}) +ENDIF() + SET( BUILT_IN_SHADER_GEN_CPP "${GENERATED_SHADER_DIR}/generated/builtin-shader-gen.cpp") ADD_CUSTOM_COMMAND(OUTPUT ${BUILT_IN_SHADER_GEN_CPP} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/../${SHADER_GENERATOR_NAME} - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../${SHADER_GENERATOR_NAME} ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR}) + DEPENDS ${SHADER_GENERATOR_BINARY} + COMMAND ${SHADER_GENERATOR_BINARY} ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR}) SET( scene_loader_src_files ${scene_loader_src_files} ${BUILT_IN_SHADER_GEN_CPP} ) diff --git a/dali-scene-loader/public-api/mesh-definition.cpp b/dali-scene-loader/public-api/mesh-definition.cpp index 8317803..de37e30 100644 --- a/dali-scene-loader/public-api/mesh-definition.cpp +++ b/dali-scene-loader/public-api/mesh-definition.cpp @@ -466,9 +466,9 @@ void MeshDefinition::Blob::ApplyMinMax(const std::vector& min, const std: : (max.empty() ? [](const float* min, const float* max, uint32_t i, float& value) { value = std::max(min[i], value); } - : [](const float* min, const float* max, uint32_t i, float& value) { + : static_cast([](const float* min, const float* max, uint32_t i, float& value) { value = std::min(std::max(min[i], value), max[i]); - }); + })); if(!clampFn) { -- 2.7.4