diff --git a/CMakeLists.txt b/CMakeLists.txt index 06de4e378..6642f7d66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1309,9 +1309,11 @@ if(NOT LIBRETRO) ${MULTITOUCH_SUPPORT_LIBRARY} ${OPENGL_LIBRARY} ${IOSURFACE_LIBRARY}) + + set(output_dir $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}>$<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}>$<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}>$<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}>) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$ENV{VULKAN_SDK}/lib/libMoltenVK.dylib" - ${CMAKE_CURRENT_BINARY_DIR}/$/Flycast.app/Contents/Frameworks/libvulkan.dylib) + ${CMAKE_CURRENT_BINARY_DIR}/$<$,>:$>${output_dir}/Flycast.app/Contents/Frameworks/libvulkan.dylib) endif() elseif(UNIX OR NINTENDO_SWITCH) if(NOT BUILD_TESTING) diff --git a/core/rend/vulkan/texture.cpp b/core/rend/vulkan/texture.cpp index bda16f0db..ec16a93b0 100644 --- a/core/rend/vulkan/texture.cpp +++ b/core/rend/vulkan/texture.cpp @@ -202,11 +202,14 @@ void Texture::Init(u32 width, u32 height, vk::Format format, u32 dataSize, bool == vk::FormatFeatureFlagBits::eSampledImage ? vk::ImageTiling::eOptimal : vk::ImageTiling::eLinear; +#ifndef __APPLE__ + // Texture corruption with moltenvk. Perf improvement on other platforms if (height <= 32 && dataSize / height <= 64 && !mipmapped && (formatProperties.linearTilingFeatures & vk::FormatFeatureFlagBits::eSampledImage) == vk::FormatFeatureFlagBits::eSampledImage) imageTiling = vk::ImageTiling::eLinear; +#endif needsStaging = imageTiling != vk::ImageTiling::eLinear; vk::ImageLayout initialLayout; vk::ImageUsageFlags usageFlags = vk::ImageUsageFlagBits::eSampled;