diff --git a/app/deploy/linux/appimage/0001-Vulkan-Don-t-try-to-reuse-old-swapchain.patch b/app/deploy/linux/appimage/0001-Vulkan-Don-t-try-to-reuse-old-swapchain.patch new file mode 100644 index 00000000..11387d73 --- /dev/null +++ b/app/deploy/linux/appimage/0001-Vulkan-Don-t-try-to-reuse-old-swapchain.patch @@ -0,0 +1,40 @@ +From 78261eb6e2fe728fa5d3843b5b8962b1ca559b7e Mon Sep 17 00:00:00 2001 +From: David Rosca +Date: Sat, 16 Dec 2023 14:52:01 +0100 +Subject: [PATCH] Vulkan: Don't try to reuse old swapchain + +--- + src/vulkan/swapchain.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/vulkan/swapchain.c b/src/vulkan/swapchain.c +index 0741fbfc..88bdf6a5 100644 +--- a/src/vulkan/swapchain.c ++++ b/src/vulkan/swapchain.c +@@ -610,13 +610,21 @@ static bool vk_sw_recreate(pl_swapchain sw, int w, int h) + } + #endif + ++ { ++ pl_gpu_flush(gpu); ++ vk_wait_idle(vk); ++ for (int i = 0; i < vk->pool_graphics->num_queues; i++) ++ vk->QueueWaitIdle(vk->pool_graphics->queues[i]); ++ vk->DestroySwapchainKHR(vk->dev, p->swapchain, PL_VK_ALLOC); ++ } ++ + // Calling `vkCreateSwapchainKHR` puts sinfo.oldSwapchain into a retired + // state whether the call succeeds or not, so we always need to garbage + // collect it afterwards - asynchronously as it may still be in use +- sinfo.oldSwapchain = p->swapchain; ++ /* sinfo.oldSwapchain = p->swapchain; */ + p->swapchain = VK_NULL_HANDLE; + VkResult res = vk->CreateSwapchainKHR(vk->dev, &sinfo, PL_VK_ALLOC, &p->swapchain); +- vk_dev_callback(vk, (vk_cb) destroy_swapchain, vk, vk_wrap_handle(sinfo.oldSwapchain)); ++ /* vk_dev_callback(vk, (vk_cb) destroy_swapchain, vk, vk_wrap_handle(sinfo.oldSwapchain)); */ + PL_VK_ASSERT(res, "vk->CreateSwapchainKHR(...)"); + + // Get the new swapchain images +-- +2.43.0 + diff --git a/appveyor.yml b/appveyor.yml index 3cdbb921..fb72e3d4 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -34,7 +34,7 @@ install: - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export LIBVA_VER=2.20.0 && git clone --branch $LIBVA_VER --depth 1 https://github.com/intel/libva.git && cd libva && ./autogen.sh && ./configure --enable-x11 --enable-wayland && make -j$(nproc) && sudo make install && cd ..; fi' - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export NVHDR_VER=11.0.10.3 && wget https://github.com/FFmpeg/nv-codec-headers/releases/download/n$NVHDR_VER/nv-codec-headers-$NVHDR_VER.tar.gz && tar -xvf nv-codec-headers-$NVHDR_VER.tar.gz && cd nv-codec-headers-$NVHDR_VER && sudo make install && cd ..; fi' - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export DAV1D_VER=1.4.0 && git clone --branch $DAV1D_VER --depth 1 https://code.videolan.org/videolan/dav1d.git && cd dav1d && meson setup build -Ddefault_library=static -Dbuildtype=release -Denable_tools=false -Denable_tests=false && ninja -C build && sudo ninja install -C build && sudo ldconfig && cd ..; fi' - - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export LIBPLACEBO_REV=3ba18d5d84738c663e16d7699342102e30e2fbc5 && git clone https://code.videolan.org/videolan/libplacebo.git && cd libplacebo && git checkout $LIBPLACEBO_REV && git submodule update --init --recursive && meson setup build -Dvulkan=enabled -Dopengl=disabled -Ddemos=false && ninja -C build && sudo ninja install -C build && sudo ldconfig && cd ..; fi' + - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export LIBPLACEBO_REV=3ba18d5d84738c663e16d7699342102e30e2fbc5 && git clone https://code.videolan.org/videolan/libplacebo.git && cd libplacebo && git checkout $LIBPLACEBO_REV && git am ../app/deploy/linux/appimage/*.patch && git submodule update --init --recursive && meson setup build -Dvulkan=enabled -Dopengl=disabled -Ddemos=false && ninja -C build && sudo ninja install -C build && sudo ldconfig && cd ..; fi' - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then export FFMPEG_VER=6.1.1 && wget https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VER.tar.bz2 && tar -xvf ffmpeg-$FFMPEG_VER.tar.bz2 && cd ffmpeg-$FFMPEG_VER && ./configure $FFMPEG_CONFIGURE_ARGS && make -j$(nproc) && sudo make install && sudo ldconfig && cd ..; fi' - sh: 'if [[ "$BUILD_TARGET" = linux ]]; then mkdir $HOME/bin && wget -O $HOME/bin/linuxdeployqt https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage && chmod a+x $HOME/bin/linuxdeployqt; fi'