From 10d66c9a5d68fa2427ded0da3f868e64bb60c97d Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 10:48:48 +0800 Subject: [PATCH 01/12] fix: workflow --- .github/workflows/gen-pr.yml | 29 +++++++++++++++++++++++++++++ gen-pr.config.yml | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gen-pr.yml b/.github/workflows/gen-pr.yml index 468d738..eea35ec 100644 --- a/.github/workflows/gen-pr.yml +++ b/.github/workflows/gen-pr.yml @@ -25,6 +25,35 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=$GITHUB_WORKSPACE/build" >> "$GITHUB_OUTPUT" + echo "install-dir=$GITHUB_WORKSPACE/install/ubuntu-latest-gcc-Debug" >> "$GITHUB_OUTPUT" + + - name: Install SDL windowing deps (Linux) + run: | + sudo apt update + sudo apt install -y \ + build-essential cmake ninja-build pkg-config gcc clang git python3 \ + libasound2-dev libjack-jackd2-dev libpulse-dev \ + xorg-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \ + libxkbcommon-dev wayland-protocols libwayland-dev \ + libdrm-dev mesa-utils mesa-common-dev + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=g++ + -DCMAKE_C_COMPILER=gcc + -DCMAKE_BUILD_TYPE=Debug + -S $GITHUB_WORKSPACE + -G "Ninja Multi-Config" + - name: Generate PR from issue using OpenRouter uses: WillBooster/gen-pr@v4.1.4 with: diff --git a/gen-pr.config.yml b/gen-pr.config.yml index 7e0b7dc..4b95c2f 100644 --- a/gen-pr.config.yml +++ b/gen-pr.config.yml @@ -9,4 +9,4 @@ aider-extra-args: "--model openrouter/openrouter/polaris-alpha" verbose: true # Run build tests after code generation -test-command: "cmake -S . -B build" +test-command: "cmake --build ./build --config Debug" From a7bb217f70e6f35d93e2aa4d52545c5b76a0bb17 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 10:54:55 +0800 Subject: [PATCH 02/12] fix: change compiler to clang --- .github/workflows/gen-pr.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gen-pr.yml b/.github/workflows/gen-pr.yml index eea35ec..d99c1a2 100644 --- a/.github/workflows/gen-pr.yml +++ b/.github/workflows/gen-pr.yml @@ -31,7 +31,7 @@ jobs: shell: bash run: | echo "build-output-dir=$GITHUB_WORKSPACE/build" >> "$GITHUB_OUTPUT" - echo "install-dir=$GITHUB_WORKSPACE/install/ubuntu-latest-gcc-Debug" >> "$GITHUB_OUTPUT" + echo "install-dir=$GITHUB_WORKSPACE/install/ubuntu-latest-clang-Debug" >> "$GITHUB_OUTPUT" - name: Install SDL windowing deps (Linux) run: | @@ -48,8 +48,8 @@ jobs: # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_CXX_COMPILER=g++ - -DCMAKE_C_COMPILER=gcc + -DCMAKE_CXX_COMPILER=clang++ + -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Debug -S $GITHUB_WORKSPACE -G "Ninja Multi-Config" From daffaa19cd5ed3806b4bed5296696311c12e37b4 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 11:04:50 +0800 Subject: [PATCH 03/12] fix: change model to kat-coder-pro --- .github/workflows/gen-pr.yml | 2 +- gen-pr.config.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gen-pr.yml b/.github/workflows/gen-pr.yml index d99c1a2..8fdadfc 100644 --- a/.github/workflows/gen-pr.yml +++ b/.github/workflows/gen-pr.yml @@ -58,5 +58,5 @@ jobs: uses: WillBooster/gen-pr@v4.1.4 with: issue-number: ${{ inputs.issue-number }} - aider-extra-args: "--model openrouter/openrouter/polaris-alpha" + aider-extra-args: "--model openrouter/kwaipilot/kat-coder-pro:free" verbose: true diff --git a/gen-pr.config.yml b/gen-pr.config.yml index 4b95c2f..2fe09e7 100644 --- a/gen-pr.config.yml +++ b/gen-pr.config.yml @@ -1,11 +1,11 @@ # gen-pr.config.yml -planning-model: openrouter/openrouter/polaris-alpha +planning-model: openrouter/kwaipilot/kat-coder-pro:free reasoning-effort: high repomix-extra-args: "--compress --remove-empty-lines --include '**/*.cpp' --include '**/*.ixx'" coding-tool: aider -aider-extra-args: "--model openrouter/openrouter/polaris-alpha" +aider-extra-args: "--model openrouter/kwaipilot/kat-coder-pro:free" verbose: true # Run build tests after code generation From d44342c82239d8467a9a886f5572d57084ebb223 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 11:24:54 +0800 Subject: [PATCH 04/12] feat: add git ignore to avoid upload binary file --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ + \ No newline at end of file From e5bb49b1d87b754f87af42631b6281199f442064 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 11:26:29 +0800 Subject: [PATCH 05/12] feat: build first before start pr --- .github/workflows/gen-pr.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/gen-pr.yml b/.github/workflows/gen-pr.yml index 8fdadfc..765a966 100644 --- a/.github/workflows/gen-pr.yml +++ b/.github/workflows/gen-pr.yml @@ -54,6 +54,9 @@ jobs: -S $GITHUB_WORKSPACE -G "Ninja Multi-Config" + - name: Build + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} + - name: Generate PR from issue using OpenRouter uses: WillBooster/gen-pr@v4.1.4 with: From cf402c099a284b1328ea2f985ea7e72b508e22ce Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 11:32:18 +0800 Subject: [PATCH 06/12] feat: add cmakelist file --- gen-pr.config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen-pr.config.yml b/gen-pr.config.yml index 2fe09e7..185635f 100644 --- a/gen-pr.config.yml +++ b/gen-pr.config.yml @@ -2,7 +2,7 @@ planning-model: openrouter/kwaipilot/kat-coder-pro:free reasoning-effort: high -repomix-extra-args: "--compress --remove-empty-lines --include '**/*.cpp' --include '**/*.ixx'" +repomix-extra-args: "--compress --remove-empty-lines --include '**/*.cpp' --include '**/*.ixx' --include '**/CMakeLists.txt'" coding-tool: aider aider-extra-args: "--model openrouter/kwaipilot/kat-coder-pro:free" From 9ff4c85acba704ca596913317ec6a4e4c980ffe3 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 11:48:27 +0800 Subject: [PATCH 07/12] fix: export namespace not class --- sdl_wrapper/sdl_wrapper.gpu.ixx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdl_wrapper/sdl_wrapper.gpu.ixx b/sdl_wrapper/sdl_wrapper.gpu.ixx index c6c1694..2c09630 100644 --- a/sdl_wrapper/sdl_wrapper.gpu.ixx +++ b/sdl_wrapper/sdl_wrapper.gpu.ixx @@ -9,9 +9,9 @@ module; export module sdl_wrapper:gpu; import :buffer; import :pipeline; -namespace sopho +export namespace sopho { - export class GpuWrapper : public std::enable_shared_from_this + class GpuWrapper : public std::enable_shared_from_this { SDL_GPUDevice* m_device{}; From 2a99d22bf42b0f72aeb253f4073e442e91286072 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 12:48:00 +0800 Subject: [PATCH 08/12] fix: try to compile on clang18 --- sdl_wrapper/CMakeLists.txt | 1 + sdl_wrapper/sdl_wrapper.gpu.cpp | 11 +++++++++++ sdl_wrapper/sdl_wrapper.gpu.ixx | 2 +- sdl_wrapper/sdl_wrapper.pipeline.cpp | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 sdl_wrapper/sdl_wrapper.gpu.cpp diff --git a/sdl_wrapper/CMakeLists.txt b/sdl_wrapper/CMakeLists.txt index 5beae00..935e679 100644 --- a/sdl_wrapper/CMakeLists.txt +++ b/sdl_wrapper/CMakeLists.txt @@ -16,6 +16,7 @@ target_sources(sdl_wrapper PRIVATE sdl_wrapper.buffer.cpp sdl_wrapper.pipeline.cpp + sdl_wrapper.gpu.cpp sdl_callback_implement.cpp ) diff --git a/sdl_wrapper/sdl_wrapper.gpu.cpp b/sdl_wrapper/sdl_wrapper.gpu.cpp new file mode 100644 index 0000000..73eab63 --- /dev/null +++ b/sdl_wrapper/sdl_wrapper.gpu.cpp @@ -0,0 +1,11 @@ +// +// Created by wsqsy on 11/14/2025. +// +module; +module sdl_wrapper; +import :gpu; +import :pipeline; +namespace sopho +{ + PipelineWrapper GpuWrapper::create_pipeline() { return PipelineWrapper{shared_from_this()}; } +} diff --git a/sdl_wrapper/sdl_wrapper.gpu.ixx b/sdl_wrapper/sdl_wrapper.gpu.ixx index 2c09630..e0e0cb2 100644 --- a/sdl_wrapper/sdl_wrapper.gpu.ixx +++ b/sdl_wrapper/sdl_wrapper.gpu.ixx @@ -45,7 +45,7 @@ export namespace sopho return result; } - auto create_pipeline() { return PipelineWrapper{shared_from_this()}; } + PipelineWrapper create_pipeline(); auto create_shader(const std::vector& p_shader, SDL_GPUShaderStage p_stage) { diff --git a/sdl_wrapper/sdl_wrapper.pipeline.cpp b/sdl_wrapper/sdl_wrapper.pipeline.cpp index 3978a43..56ac8da 100644 --- a/sdl_wrapper/sdl_wrapper.pipeline.cpp +++ b/sdl_wrapper/sdl_wrapper.pipeline.cpp @@ -20,7 +20,7 @@ namespace sopho * * @param p_device Shared pointer to the GpuWrapper used to create and release shaders and graphics pipelines. */ - PipelineWrapper::PipelineWrapper(std::shared_ptr p_device) : m_device(p_device) + PipelineWrapper::PipelineWrapper(std::shared_ptr<::sopho::GpuWrapper> p_device) : m_device(p_device) { options.SetTargetEnvironment(shaderc_target_env_vulkan, 0); From 45e50f12694e15a592519f00ff66e0473ea3b495 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 13:17:10 +0800 Subject: [PATCH 09/12] fix: try to compile on clang18 --- sdl_wrapper/sdl_wrapper.buffer.ixx | 2 +- sdl_wrapper/sdl_wrapper.gpu.cpp | 10 +++++++++- sdl_wrapper/sdl_wrapper.gpu.ixx | 8 +------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/sdl_wrapper/sdl_wrapper.buffer.ixx b/sdl_wrapper/sdl_wrapper.buffer.ixx index a813db7..163d9d6 100644 --- a/sdl_wrapper/sdl_wrapper.buffer.ixx +++ b/sdl_wrapper/sdl_wrapper.buffer.ixx @@ -16,7 +16,7 @@ export namespace sopho SDL_GPUTransferBuffer* m_transfer_buffer{}; uint32_t m_transfer_buffer_size{}; - BufferWrapper(std::shared_ptr p_gpu, SDL_GPUBuffer* p_buffer) : + BufferWrapper(std::shared_ptr<::sopho::GpuWrapper> p_gpu, SDL_GPUBuffer* p_buffer) : m_gpu(p_gpu), m_vertex_buffer(p_buffer) { } diff --git a/sdl_wrapper/sdl_wrapper.gpu.cpp b/sdl_wrapper/sdl_wrapper.gpu.cpp index 73eab63..b759408 100644 --- a/sdl_wrapper/sdl_wrapper.gpu.cpp +++ b/sdl_wrapper/sdl_wrapper.gpu.cpp @@ -2,10 +2,18 @@ // Created by wsqsy on 11/14/2025. // module; +#include module sdl_wrapper; import :gpu; import :pipeline; namespace sopho { + BufferWrapper GpuWrapper::create_buffer(SDL_GPUBufferUsageFlags flag, uint32_t size) + { + SDL_GPUBufferCreateInfo create_info{flag, size}; + auto buffer = SDL_CreateGPUBuffer(m_device, &create_info); + BufferWrapper result(shared_from_this(), buffer); + return result; + } PipelineWrapper GpuWrapper::create_pipeline() { return PipelineWrapper{shared_from_this()}; } -} +} // namespace sopho diff --git a/sdl_wrapper/sdl_wrapper.gpu.ixx b/sdl_wrapper/sdl_wrapper.gpu.ixx index e0e0cb2..352ce9d 100644 --- a/sdl_wrapper/sdl_wrapper.gpu.ixx +++ b/sdl_wrapper/sdl_wrapper.gpu.ixx @@ -37,13 +37,7 @@ export namespace sopho auto data() { return m_device; } - auto create_buffer(SDL_GPUBufferUsageFlags flag, uint32_t size) - { - SDL_GPUBufferCreateInfo create_info{flag, size}; - auto buffer = SDL_CreateGPUBuffer(m_device, &create_info); - BufferWrapper result(shared_from_this(), buffer); - return result; - } + BufferWrapper create_buffer(SDL_GPUBufferUsageFlags flag, uint32_t size); PipelineWrapper create_pipeline(); From 2fbf98e0c8eae9bd74a6e1c342216b13b8e0fde7 Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 13:47:24 +0800 Subject: [PATCH 10/12] fix: ignore build dir --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5f28270..541c827 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ - \ No newline at end of file +/build \ No newline at end of file From 12d716b34776e772fc2a9b2cf29ca2e20bc8054e Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 15:13:06 +0800 Subject: [PATCH 11/12] fix: remove bom --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 541c827..42afabf 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/build \ No newline at end of file +/build \ No newline at end of file From a8594eaa37ff407d54b4778cbd60aa82931d734b Mon Sep 17 00:00:00 2001 From: Sophomore Date: Fri, 14 Nov 2025 15:14:27 +0800 Subject: [PATCH 12/12] fix: change config parameter --- .github/workflows/gen-pr.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/gen-pr.yml b/.github/workflows/gen-pr.yml index 765a966..b360432 100644 --- a/.github/workflows/gen-pr.yml +++ b/.github/workflows/gen-pr.yml @@ -50,12 +50,11 @@ jobs: cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang - -DCMAKE_BUILD_TYPE=Debug -S $GITHUB_WORKSPACE -G "Ninja Multi-Config" - name: Build - run: cmake --build ${{ steps.strings.outputs.build-output-dir }} + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Debug - name: Generate PR from issue using OpenRouter uses: WillBooster/gen-pr@v4.1.4