diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp index eebb88de29..9a18e8ecf4 100644 --- a/src/common/host_memory.cpp +++ b/src/common/host_memory.cpp @@ -625,7 +625,14 @@ public: prot_flags |= PROT_EXEC; #endif int flags = (fd > 0 ? MAP_SHARED : MAP_PRIVATE) | MAP_FIXED; - void* ret = mmap(virtual_base + virtual_offset, length, prot_flags, flags, fd, host_offset); + + u8* addr = virtual_base + virtual_offset; +#ifdef __APPLE__ + // The way Steve Jobs intended + addr = (void*)trunc_page(u64(addr)); + length = round_page(length); +#endif + void* ret = mmap(addr, length, prot_flags, flags, fd, host_offset); ASSERT_MSG(ret != MAP_FAILED, "mmap: {}", strerror(errno)); } diff --git a/src/video_core/vulkan_common/vk_enum_string_helper.h b/src/video_core/vulkan_common/vk_enum_string_helper.h index a1515814c6..8e8f01dc47 100644 --- a/src/video_core/vulkan_common/vk_enum_string_helper.h +++ b/src/video_core/vulkan_common/vk_enum_string_helper.h @@ -5,4 +5,7 @@ #include "video_core/vulkan_common/vulkan.h" +#if defined(__APPLE__) && !defined(VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS) +# define VK_STRUCTURE_TYPE_OH_SURFACE_CREATE_INFO_OHOS VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS +#endif #include