From 804c207dcc07b9ae39922a3475de7e9a513f3e16 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 1 Mar 2023 09:51:08 -0800 Subject: Partial solution for SL-18458 Materials override cache not working and related SL-18684/SL-19206/SL-19173 --- indra/newview/tests/llvocache_test.cpp | 146 +++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 indra/newview/tests/llvocache_test.cpp (limited to 'indra/newview/tests/llvocache_test.cpp') diff --git a/indra/newview/tests/llvocache_test.cpp b/indra/newview/tests/llvocache_test.cpp new file mode 100644 index 0000000000..ea6abe254e --- /dev/null +++ b/indra/newview/tests/llvocache_test.cpp @@ -0,0 +1,146 @@ +/** + * @file llvocache_.cpp + * @author Brad + * @date 2023-03-01 + * @brief Test Viewer Object Cache functionality + * + * $LicenseInfo:firstyear=2023&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2014, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ +#include "../llviewerprecompiledheaders.h" +#include "../test/lltut.h" + +#include "llvocache.h" + +#include "lldir.h" +#include "llhudobject.h" +#include "llregionhandle.h" +#include "llsdutil.h" +#include "llsdserialize.h" +#include "llviewerobjectlist.h" +#include "llviewerregion.h" + +#include "lldir_stub.cpp" +#include "llvieweroctree_stub.cpp" + +namespace +{ + +} + + +//---------------------------------------------------------------------------- +// Mock objects for the dependencies of the code we're testing +S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion) { return 0; } + +LLViewerObjectList::LLViewerObjectList() = default; +LLViewerObjectList::~LLViewerObjectList() = default; +LLDebugBeacon::~LLDebugBeacon() = default; +LLViewerObjectList gObjectList{}; +LLViewerCamera::eCameraID LLViewerCamera::sCurCameraID{}; +void LLViewerObject::unpackUUID(LLDataPackerBinaryBuffer *dp, LLUUID &value, std::string name) {} + +bool LLViewerRegion::addVisibleGroup(LLViewerOctreeGroup*) { return false; } +U32 LLViewerRegion::getNumOfVisibleGroups() const { return 0; } +LLVector3 LLViewerRegion::getOriginAgent() const { return LLVector3::zero; } +S32 LLViewerRegion::sLastCameraUpdated{}; + +// ------------------------------------------------------------------------------------------- +// TUT +// ------------------------------------------------------------------------------------------- +namespace tut +{ + // Test wrapper declaration + struct vocacheTest + { + vocacheTest() = default; + ~vocacheTest() = default; + + static const std::string override_llsd_text[]; + }; + + const std::string vocacheTest::override_llsd_text[]{ + // sample override contents captured from traffic + R"( + {'gltf_json':['{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n','{"asset":{"version":"2.0"},"images":[{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"},{"uri":"00000000-0000-0000-0000-000000000000"}],"materials":[{"emissiveTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":3},"normalTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":1},"occlusionTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":0},"metallicRoughnessTexture":{"extensions":{"KHR_texture_transform":{"offset":[0.0,0.0],"rotation":0.0,"scale":[2.0,2.0]}},"index":2}}}],"textures":[{"source":0},{"source":1},{"source":2},{"source":3},{"source":4}]}\n'],'object_id':u8b357110-4845-1d40-1cf0-cc4a2c22a4f1,'sides':[i0,i1,i2,i3,i4,i5,i6]})" + }; + + // Tut templating thingamagic: test group, object and test instance + struct vocacheTestFactory : public test_group + { + vocacheTestFactory() + : test_group("LLVOCache") + { + ll_init_apr(); + + const bool READ_ONLY = false; + const U32 INDRA_OBJECT_CACHE_VERSION = 15; // see LLAppViewer::getObjectCacheVersion() + const U32 CACHE_NUMBER_OF_REGIONS = 128; // see setting CacheNumberOfRegionsForObjects + + LLVOCache &instance = LLVOCache::initParamSingleton(READ_ONLY); + instance.initCache(LL_PATH_CACHE, CACHE_NUMBER_OF_REGIONS, INDRA_OBJECT_CACHE_VERSION); + } + + ~vocacheTestFactory() + { + LLVOCache::deleteSingleton(); + ll_cleanup_apr(); + } + + }; + + typedef vocacheTestFactory::object vocacheTestObject; + tut::vocacheTestFactory tut_test; + + // --------------------------------------------------------------------------------------- + // Test functions + // --------------------------------------------------------------------------------------- + + template<> template<> + void vocacheTestObject::test<1>() + { + LLGLTFOverrideCacheEntry entry{}; + LLSD entry_llsd; + + std::istringstream in_llsd(override_llsd_text[0]); + bool success = LLSDSerialize::deserialize(entry_llsd, in_llsd, override_llsd_text[0].length()); + + ensure("llsd deserialize succeeds", success); + + entry.fromLLSD(entry_llsd); + ensure_equals("entry object_id match", entry.mObjectId, LLUUID("8b357110-4845-1d40-1cf0-cc4a2c22a4f1")); + ensure_equals("sides count", entry.mSides.size(), 7); + + //std::cout << other << std::endl; + ensure_equals("toLLSD() match", entry.toLLSD(), entry_llsd); + } + + template<> template<> + void vocacheTestObject::test<2>() + { + LLVOCacheEntry::vocache_gltf_overrides_map_t extras; + + U64 region_handle = to_region_handle(140, 81); + LLUUID region_id = LLUUID::generateNewID(); + + LLVOCache::instance().readGenericExtrasFromCache(region_handle, region_id, extras); + } +} -- cgit v1.3 From 1b6cd23abdc9e5208076d55cce9f06bc2a0713a1 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 29 Mar 2023 17:05:40 -0700 Subject: CMake and tests fixups after merge with main for DRTVWR-559 --- indra/cmake/LLCommon.cmake | 1 - indra/cmake/LLMath.cmake | 1 - indra/cmake/LLRender.cmake | 22 ---------------------- indra/cmake/Tracy.cmake | 7 ++----- indra/llprimitive/CMakeLists.txt | 7 +++---- indra/newview/CMakeLists.txt | 6 +++--- indra/newview/llgltfmateriallist.cpp | 2 -- .../newview/tests/llviewercontrollistener_test.cpp | 5 ++--- indra/newview/tests/llvocache_test.cpp | 9 +++++---- 9 files changed, 15 insertions(+), 45 deletions(-) delete mode 100644 indra/cmake/LLRender.cmake (limited to 'indra/newview/tests/llvocache_test.cpp') diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index 03f1fe39cb..869d5805f2 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -9,4 +9,3 @@ include(ZLIBNG) include(JsonCpp) include(XmlRpcEpi) - ${TRACY_LIBRARY} diff --git a/indra/cmake/LLMath.cmake b/indra/cmake/LLMath.cmake index 688e62e24b..e841d2ac78 100644 --- a/indra/cmake/LLMath.cmake +++ b/indra/cmake/LLMath.cmake @@ -2,5 +2,4 @@ include(Variables) include(Mikktspace) -include(MESHOPTIMIZER) diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake deleted file mode 100644 index 2d9d3725ad..0000000000 --- a/indra/cmake/LLRender.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# -*- cmake -*- - -include(Variables) -include(FreeType) -include(GLH) -include(GLEXT) - -set(LLRENDER_INCLUDE_DIRS - ${LIBS_OPEN_DIR}/llrender - ${GLH_INCLUDE_DIR} - ${GLEXT_INCLUDE_DIR} - ) - -if (BUILD_HEADLESS) - set(LLRENDER_HEADLESS_LIBRARIES - llrenderheadless - ) -endif (BUILD_HEADLESS) -set(LLRENDER_LIBRARIES - llrender - ) - diff --git a/indra/cmake/Tracy.cmake b/indra/cmake/Tracy.cmake index cf9c866f8e..0bf3bd85ff 100644 --- a/indra/cmake/Tracy.cmake +++ b/indra/cmake/Tracy.cmake @@ -11,11 +11,8 @@ if (USE_TRACY) use_prebuilt_binary(tracy) target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy) - set(TRACY_LIBRARY "TracyClient") - set(TRACY_LIBRARY "TracyClient") -# See: indra/llcommon/llprofiler.h - target_compile_definitions(ll::tracy INTERFACE LL_PROFILER_CONFIGURATION=3 ) - set(TRACY_LIBRARY "TracyClient") + # See: indra/llcommon/llprofiler.h + add_compile_definitions(LL_PROFILER_CONFIGURATION=3) endif (USE_TRACY) diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index f8f55759ae..76d261ab3e 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -7,11 +7,8 @@ include(LLCommon) include(LLCoreHttp) include(LLPhysicsExtensions) include(LLPrimitive) -include(LLRender) include(GLH) include(TinyGLTF) - ${LLRENDER_INCLUDE_DIRS} - ${TINYGLTF_INCLUDE_DIR} set(llprimitive_SOURCE_FILES lldaeloader.cpp @@ -68,6 +65,7 @@ target_link_libraries(llprimitive llcorehttp llxml llcharacter + llrender llphysicsextensions_impl ll::colladadom ll::pcre @@ -82,6 +80,7 @@ if (LL_TESTS) llprimitive.cpp llgltfmaterial.cpp ) - + + set_property(SOURCE llprimitive.cpp PROPERTY LL_TEST_ADDITIONAL_LIBRARIES llmessage) LL_ADD_PROJECT_UNIT_TESTS(llprimitive "${llprimitive_TEST_SOURCE_FILES}") endif (LL_TESTS) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 12d452011d..b197182009 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2229,8 +2229,8 @@ if (LL_TESTS) set_source_files_properties( llvocache.cpp PROPERTIES - LL_TEST_ADDITIONAL_SOURCE_FILES - ../llmessage/lldatapacker.cpp + LL_TEST_ADDITIONAL_SOURCE_FILES ../llmessage/lldatapacker.cpp + LL_TEST_ADDITIONAL_PROJECTS "llprimitive" ) set(test_libs @@ -2251,7 +2251,6 @@ if (LL_TESTS) LL_TEST_ADDITIONAL_LIBRARIES "${test_libs}" ) - set_source_files_properties( llworldmap.cpp llworldmipmap.cpp @@ -2271,6 +2270,7 @@ if (LL_TESTS) PROPERTIES LL_TEST_ADDITIONAL_SOURCE_FILES llversioninfo.cpp ) + set_property( SOURCE ${viewer_TEST_SOURCE_FILES} PROPERTY diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp index 9c78e48cab..57a67f52f6 100644 --- a/indra/newview/llgltfmateriallist.cpp +++ b/indra/newview/llgltfmateriallist.cpp @@ -554,8 +554,6 @@ void LLGLTFMaterialList::onAssetLoadComplete(const LLUUID& id, LLAssetType::ETyp LL::WorkQueue::ptr_t main_queue = LL::WorkQueue::getInstance("mainloop"); LL::WorkQueue::ptr_t general_queue = LL::WorkQueue::getInstance("General"); - typedef std::pair return_data_t; - main_queue->postTo( general_queue, [id, asset_type, asset_data]() // Work done on general queue diff --git a/indra/newview/tests/llviewercontrollistener_test.cpp b/indra/newview/tests/llviewercontrollistener_test.cpp index 6d100ef984..8aed2a8043 100644 --- a/indra/newview/tests/llviewercontrollistener_test.cpp +++ b/indra/newview/tests/llviewercontrollistener_test.cpp @@ -10,9 +10,9 @@ */ // Precompiled header -#include "llviewerprecompiledheaders.h" +#include "../llviewerprecompiledheaders.h" // associated header -#include "llviewercontrollistener.h" +#include "../llviewercontrollistener.h" // STL headers // std headers // external library headers @@ -21,7 +21,6 @@ #include "../test/catch_and_store_what_in.h" // catch_what() #include "commoncontrol.h" #include "llcontrol.h" // LLControlGroup -#include "llviewercontrollistener.h" /***************************************************************************** * TUT diff --git a/indra/newview/tests/llvocache_test.cpp b/indra/newview/tests/llvocache_test.cpp index ea6abe254e..c27730eb58 100644 --- a/indra/newview/tests/llvocache_test.cpp +++ b/indra/newview/tests/llvocache_test.cpp @@ -28,15 +28,16 @@ #include "../llviewerprecompiledheaders.h" #include "../test/lltut.h" -#include "llvocache.h" +#include "../llvocache.h" #include "lldir.h" -#include "llhudobject.h" +#include "../llhudobject.h" #include "llregionhandle.h" #include "llsdutil.h" #include "llsdserialize.h" -#include "llviewerobjectlist.h" -#include "llviewerregion.h" + +#include "../llviewerobjectlist.h" +#include "../llviewerregion.h" #include "lldir_stub.cpp" #include "llvieweroctree_stub.cpp" -- cgit v1.3