vk: disable small tex optimization on macOS. Fix libMoltenVK embedding
small textures linear optimization leads to texture corruption with moltenvk. Copy libMoltenVk to correct runtime output dir.
This commit is contained in:
parent
71c4ec34d5
commit
17bbb7f145
|
@ -1309,9 +1309,11 @@ if(NOT LIBRETRO)
|
|||
${MULTITOUCH_SUPPORT_LIBRARY}
|
||||
${OPENGL_LIBRARY}
|
||||
${IOSURFACE_LIBRARY})
|
||||
|
||||
set(output_dir $<$<CONFIG:Release>:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}>$<$<CONFIG:RelWithDebInfo>:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}>$<$<CONFIG:MinSizeRel>:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}>$<$<CONFIG:Debug>:${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}/$<CONFIG>/Flycast.app/Contents/Frameworks/libvulkan.dylib)
|
||||
${CMAKE_CURRENT_BINARY_DIR}/$<$<STREQUAL:$<GENEX_EVAL:${output_dir}>,>:$<CONFIG>>${output_dir}/Flycast.app/Contents/Frameworks/libvulkan.dylib)
|
||||
endif()
|
||||
elseif(UNIX OR NINTENDO_SWITCH)
|
||||
if(NOT BUILD_TESTING)
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue