Skip to content

Commit ca17e96

Browse files
committed
Change: Switch to simdjson's ondemand
1 parent 33f93a9 commit ca17e96

File tree

3 files changed

+2074
-1550
lines changed

3 files changed

+2074
-1550
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ if (SIMDJSON_TARGET_VERSION)
9797
target_compile_definitions(fastgltf PRIVATE SIMDJSON_TARGET_VERSION="${SIMDJSON_TARGET_VERSION}")
9898
endif()
9999

100+
if (SIMDJSON_VERBOSE_LOGGING)
101+
target_compile_definitions(fastgltf_simdjson PUBLIC SIMDJSON_VERBOSE_LOGGING=1)
102+
endif()
103+
100104
target_compile_definitions(fastgltf PUBLIC "FASTGLTF_USE_CUSTOM_SMALLVECTOR=$<BOOL:${FASTGLTF_USE_CUSTOM_SMALLVECTOR}>")
101105
target_compile_definitions(fastgltf PUBLIC "FASTGLTF_ENABLE_DEPRECATED_EXT=$<BOOL:${FASTGLTF_ENABLE_DEPRECATED_EXT}>")
102106
target_compile_definitions(fastgltf PUBLIC "FASTGLTF_DISABLE_CUSTOM_MEMORY_POOL=$<BOOL:${FASTGLTF_DISABLE_CUSTOM_MEMORY_POOL}>")

include/fastgltf/core.hpp

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
struct AAssetManager;
4343
#endif
4444

45+
#include <simdjson.h>
4546
namespace simdjson::dom {
4647
class array;
4748
class object;
@@ -683,7 +684,7 @@ namespace fastgltf {
683684
class Parser {
684685
// The simdjson parser object. We want to share it between runs, so it does not need to
685686
// reallocate over and over again. We're hiding it here to not leak the simdjson header.
686-
std::unique_ptr<simdjson::dom::parser> jsonParser;
687+
std::unique_ptr<simdjson::ondemand::parser> jsonParser;
687688

688689
ParserInternalConfig config = {};
689690
DataSource glbBuffer;
@@ -701,22 +702,23 @@ namespace fastgltf {
701702

702703
Error generateMeshIndices(Asset& asset) const;
703704

704-
Error parseAccessors(simdjson::dom::array& array, Asset& asset);
705-
Error parseAnimations(simdjson::dom::array& array, Asset& asset);
706-
Error parseBuffers(simdjson::dom::array& array, Asset& asset);
707-
Error parseBufferViews(simdjson::dom::array& array, Asset& asset);
708-
Error parseCameras(simdjson::dom::array& array, Asset& asset);
709-
Error parseExtensions(simdjson::dom::object& extensionsObject, Asset& asset);
710-
Error parseImages(simdjson::dom::array& array, Asset& asset);
711-
Error parseLights(simdjson::dom::array& array, Asset& asset);
712-
Error parseMaterials(simdjson::dom::array& array, Asset& asset);
713-
Error parseMeshes(simdjson::dom::array& array, Asset& asset);
714-
Error parseNodes(simdjson::dom::array& array, Asset& asset);
715-
Error parseSamplers(simdjson::dom::array& array, Asset& asset);
716-
Error parseScenes(simdjson::dom::array& array, Asset& asset);
717-
Error parseSkins(simdjson::dom::array& array, Asset& asset);
718-
Error parseTextures(simdjson::dom::array& array, Asset& asset);
719-
Expected<Asset> parse(simdjson::dom::object root, Category categories);
705+
Error parseAccessors(simdjson::ondemand::array& array, Asset& asset);
706+
Error parseAnimations(simdjson::ondemand::array& array, Asset& asset);
707+
Error parseBuffers(simdjson::ondemand::array& array, Asset& asset);
708+
Error parseBufferViews(simdjson::ondemand::array& array, Asset& asset);
709+
Error parseCameras(simdjson::ondemand::array& array, Asset& asset);
710+
Error parseExtensions(simdjson::ondemand::object& extensionsObject, Asset& asset);
711+
Error parseImages(simdjson::ondemand::array& array, Asset& asset);
712+
Error parseLights(simdjson::ondemand::array& array, Asset& asset);
713+
Error parseMaterials(simdjson::ondemand::array& array, Asset& asset);
714+
Error parseMeshPrimitives(simdjson::ondemand::array& array, Asset& asset, Mesh& mesh);
715+
Error parseMeshes(simdjson::ondemand::array& array, Asset& asset);
716+
Error parseNodes(simdjson::ondemand::array& array, Asset& asset);
717+
Error parseSamplers(simdjson::ondemand::array& array, Asset& asset);
718+
Error parseScenes(simdjson::ondemand::array& array, Asset& asset);
719+
Error parseSkins(simdjson::ondemand::array& array, Asset& asset);
720+
Error parseTextures(simdjson::ondemand::array& array, Asset& asset);
721+
Expected<Asset> parse(simdjson::ondemand::object root, Category categories);
720722

721723
public:
722724
explicit Parser(Extensions extensionsToLoad = Extensions::None) noexcept;

0 commit comments

Comments
 (0)