From 925537dcb356e52a5cecb073ca32414a32c0d5cd Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Mon, 16 Mar 2026 16:51:53 +0100 Subject: [PATCH] Macos changes --- .vscode/launch.json | 7 +++- CMakeLists.txt | 4 +- CMakePresets.json | 15 +++++--- gdb/Seele_lldb.py | 62 ++++++++++++++++++++++++++++++ src/Engine/Graphics/VertexData.cpp | 2 +- vcpkg.json | 1 + 6 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 gdb/Seele_lldb.py diff --git a/.vscode/launch.json b/.vscode/launch.json index 5e6075f..7312dc4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -18,9 +18,12 @@ "name": "Editor (Mac)", "type": "lldb", "request": "launch", - "program": "${workspaceRoot}/build/external/Seele/Debug/Editor", + "program": "${workspaceRoot}/build/external/Seele/Editor", "args": [], - "cwd": "${workspaceRoot}/build/external/Seele/Debug", + "cwd": "${workspaceRoot}/build/external/Seele", + "initCommands": [ + "command script import ${workspaceFolder}/external/Seele/gdb/Seele_lldb.py" + ] }, { "name": "Editor (Linux)", diff --git a/CMakeLists.txt b/CMakeLists.txt index d940d74..6d54de8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,9 @@ add_library(Engine SHARED "") target_include_directories(Engine PRIVATE src/Engine) target_link_libraries(Engine PUBLIC Vulkan::Vulkan) target_link_libraries(Engine PUBLIC GPUOpen::VulkanMemoryAllocator) -target_link_libraries(Engine PUBLIC slang::slang-glslang) +if(NOT APPLE) + target_link_libraries(Engine PUBLIC slang::slang-glslang) +endif() target_link_libraries(Engine PUBLIC EnTT::EnTT) target_link_libraries(Engine PUBLIC glfw) target_link_libraries(Engine PUBLIC glm::glm) diff --git a/CMakePresets.json b/CMakePresets.json index 256b3e5..f6e5f52 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -70,27 +70,32 @@ { "name": "release", "displayName": "Release (no ASan)", - "configurePreset": "release" + "configurePreset": "release", + "jobs": 0 }, { "name": "release-asan", "displayName": "Release (ASan)", - "configurePreset": "release-asan" + "configurePreset": "release-asan", + "jobs": 0 }, { "name": "debug", "displayName": "Debug (no ASan)", - "configurePreset": "debug" + "configurePreset": "debug", + "jobs": 0 }, { "name": "debug-mac", "displayName": "Debug Mac (no ASan)", - "configurePreset": "debug-mac" + "configurePreset": "debug-mac", + "jobs": 0 }, { "name": "debug-asan", "displayName": "Debug (ASan)", - "configurePreset": "debug-asan" + "configurePreset": "debug-asan", + "jobs": 0 } ] } diff --git a/gdb/Seele_lldb.py b/gdb/Seele_lldb.py new file mode 100644 index 0000000..870660c --- /dev/null +++ b/gdb/Seele_lldb.py @@ -0,0 +1,62 @@ +import lldb + +def Array_SummaryProvider(valobj, internal_dict): + size = valobj.GetChildMemberWithName('arraySize').GetValueAsUnsigned(0) + return f"Array(size={size})" + +class ArraySyntheticProvider: + def __init__(self, valobj, internal_dict): + self.valobj = valobj + self.update() + + def num_children(self): + return self.size + + def get_child_index(self, name): + try: + return int(name.lstrip('[').rstrip(']')) + except: + return -1 + + def get_child_at_index(self, index): + if index < 0 or index >= self.size: + return None + offset = index * self.data.GetType().GetPointeeType().GetByteSize() + return self.data.CreateChildAtOffset(f'[{index}]', offset, self.data.GetType().GetPointeeType()) + + def update(self): + self.data = self.valobj.GetChildMemberWithName('_data') + self.size = self.valobj.GetChildMemberWithName('arraySize').GetValueAsUnsigned(0) + + def has_children(self): + return True + +def Vector_SummaryProvider(valobj, internal_dict): + # Get the template parameters to determine vector length + type_name = valobj.GetTypeName() + + # Extract components + x = valobj.GetChildMemberWithName('x').GetValue() + y = valobj.GetChildMemberWithName('y').GetValue() + + # Check if z and w exist + z_child = valobj.GetChildMemberWithName('z') + w_child = valobj.GetChildMemberWithName('w') + + comps = [x, y] + if z_child.IsValid(): + comps.append(z_child.GetValue()) + if w_child.IsValid(): + comps.append(w_child.GetValue()) + + return "(" + ", ".join(comps) + ")" + +def __lldb_init_module(debugger, internal_dict): + # Register Array formatter + debugger.HandleCommand('type summary add -F Seele_lldb.Array_SummaryProvider -x "^Seele::Array<.*>$"') + debugger.HandleCommand('type synthetic add -l Seele_lldb.ArraySyntheticProvider -x "^Seele::Array<.*>$"') + + # Register Vector formatter + debugger.HandleCommand('type summary add -F Seele_lldb.Vector_SummaryProvider -x "^glm::(detail::)?t?vec[234]?<.*>$"') + + print("Seele LLDB formatters loaded") diff --git a/src/Engine/Graphics/VertexData.cpp b/src/Engine/Graphics/VertexData.cpp index 5525096..06bcc92 100644 --- a/src/Engine/Graphics/VertexData.cpp +++ b/src/Engine/Graphics/VertexData.cpp @@ -619,7 +619,7 @@ void VertexData::loadMeshlets(MeshId id, const Array& loadedPositions, c // todo: use meshopt for bb generation m.bounding = AABB(); for (size_t j = 0; j < m.vertexIndices.size; ++j) { - m.bounding.adjust(loadedPositions[vertexIndices[meshoptMeshlets[i].vertex_offset + j + m.indicesOffset]]); + m.bounding.adjust(loadedPositions[vertexIndices[meshoptMeshlets[i].vertex_offset + j + vertexOffset]]); } } registeredMeshes[id].meshData = MeshData{ diff --git a/vcpkg.json b/vcpkg.json index 2ed3b47..c467f19 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,6 +3,7 @@ { "name": "vulkan" }, + "vulkan-loader", { "name": "vulkan-memory-allocator" },