[vulkan] Clarify configuration macros for external memory and semaphores.

This CL clarifies the macros used by the external memory and semaphore
implementations in the following way:

- Replace SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD with
  SWIFTSHADER_EXTERNAL_OPAQUE_FD, and do the same for semaphore.

  This is driven by the fact that there is nothing specific to Linux
  in the VK_KHR_external_{memory,semaphore}_fd extensions. The fact
  that Linux and Android use a memfd-backed region is an implementation
  detail (that is now only captured in VkDeviceMemoryExternalLinux.h).

  This also opens the door to an OSX implementation of the extension
  that would use a Mach-based shared memory regions instead.

- Remove SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT, since the
  VK_FUCHSIA_external_semaphore extension is platform-specific, and
  replace all checks against VK_USE_PLATFORM_FUCHSIA instead.

NOTE: This shall not change the generated code at all, for any
platform.

Bug: b/143122483
Bug: b/140421726
Change-Id: If3dffef15df2bf3c39b7860ed401af5a0b95e4e9
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38489
Reviewed-by: Ben Clayton <bclayton@google.com>
Tested-by: David Turner <digit@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkConfig.h b/src/Vulkan/VkConfig.h
index 5481d7d..f2014c8 100644
--- a/src/Vulkan/VkConfig.h
+++ b/src/Vulkan/VkConfig.h
@@ -84,13 +84,9 @@
 
 }
 
-#if VK_USE_PLATFORM_XLIB_KHR || VK_USE_PLATFORM_ANDROID_KHR
-#define SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD        1
-#define SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD     1
-#endif
-
-#if VK_USE_PLATFORM_FUCHSIA
-#define SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT  1
+#if defined(__linux__) || defined(__ANDROID__)
+#define SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD        1
+#define SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD     1
 #endif
 
 #endif // VK_CONFIG_HPP_
diff --git a/src/Vulkan/VkDeviceMemory.cpp b/src/Vulkan/VkDeviceMemory.cpp
index ee56500..aeadf15 100644
--- a/src/Vulkan/VkDeviceMemory.cpp
+++ b/src/Vulkan/VkDeviceMemory.cpp
@@ -36,7 +36,7 @@
     // A value of 0 corresponds to non-external memory.
 	virtual VkExternalMemoryHandleTypeFlagBits getFlagBit() const = 0;
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 	virtual VkResult exportFd(int* pFd) const
 	{
 		return VK_ERROR_INVALID_EXTERNAL_HANDLE;
@@ -121,8 +121,12 @@
 
 }  // namespace vk
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
-#include "VkDeviceMemoryExternalLinux.hpp"
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
+#  if defined(__linux__) || defined(__ANDROID__)
+#    include "VkDeviceMemoryExternalLinux.hpp"
+#  else
+#    error "Missing VK_KHR_external_memory_fd implementation for this platform!"
+#  endif
 #endif
 
 namespace vk
@@ -131,8 +135,8 @@
 static void findTraits(const VkMemoryAllocateInfo* pAllocateInfo,
 					   ExternalMemoryTraits*       pTraits)
 {
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
-	if (parseCreateInfo<LinuxMemfdExternalMemory>(pAllocateInfo, pTraits))
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
+	if (parseCreateInfo<OpaqueFdExternalMemory>(pAllocateInfo, pTraits))
 	{
 		return;
 	}
@@ -220,7 +224,7 @@
 	return (supportedHandleTypes & handle_type_bit) != 0;
 }
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 VkResult DeviceMemory::exportFd(int* pFd) const
 {
 	return external->exportFd(pFd);
diff --git a/src/Vulkan/VkDeviceMemory.hpp b/src/Vulkan/VkDeviceMemory.hpp
index e63cb7e..230f0c9 100644
--- a/src/Vulkan/VkDeviceMemory.hpp
+++ b/src/Vulkan/VkDeviceMemory.hpp
@@ -28,7 +28,7 @@
 
 	static size_t ComputeRequiredAllocationSize(const VkMemoryAllocateInfo* pCreateInfo);
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 	VkResult exportFd(int* pFd) const;
 #endif
 
diff --git a/src/Vulkan/VkDeviceMemoryExternalLinux.hpp b/src/Vulkan/VkDeviceMemoryExternalLinux.hpp
index 6c4fb5f..620037d 100644
--- a/src/Vulkan/VkDeviceMemoryExternalLinux.hpp
+++ b/src/Vulkan/VkDeviceMemoryExternalLinux.hpp
@@ -19,7 +19,7 @@
 #include <string.h>
 #include <sys/mman.h>
 
-class LinuxMemfdExternalMemory : public vk::DeviceMemory::ExternalBase
+class OpaqueFdExternalMemory : public vk::DeviceMemory::ExternalBase
 {
 public:
 	// Helper struct to parse the VkMemoryAllocateInfo.pNext chain and
@@ -81,12 +81,12 @@
 		return info.importFd || info.exportFd;
 	}
 
-	explicit LinuxMemfdExternalMemory(const VkMemoryAllocateInfo* pAllocateInfo)
+	explicit OpaqueFdExternalMemory(const VkMemoryAllocateInfo* pAllocateInfo)
 			: allocateInfo(pAllocateInfo)
 	{
 	}
 
-	~LinuxMemfdExternalMemory()
+	~OpaqueFdExternalMemory()
 	{
 		memfd.close();
 	}
diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp
index 991f51f..5613da2 100644
--- a/src/Vulkan/VkGetProcAddress.cpp
+++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -347,7 +347,7 @@
 	},
 #endif
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 	// VK_KHR_external_semaphore_fd
 	{
 		VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
@@ -358,7 +358,7 @@
 	},
 #endif
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 	// VK_FUCHSIA_external_semaphore
 	{
 		VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
@@ -369,7 +369,7 @@
 	},
 #endif
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 	// VK_KHR_external_memory_fd
 	{
 		VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index e968b83..862bc20 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -25,7 +25,7 @@
 
 static void setExternalMemoryProperties(VkExternalMemoryHandleTypeFlagBits handleType, VkExternalMemoryProperties* properties)
 {
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 	if (handleType == VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT)
 	{
 		properties->compatibleHandleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT;
@@ -384,7 +384,7 @@
 
 void PhysicalDevice::getProperties(const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const
 {
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 	if (pExternalSemaphoreInfo->handleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)
 	{
 		pExternalSemaphoreProperties->compatibleHandleTypes = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT;
@@ -393,7 +393,7 @@
 		return;
 	}
 #endif
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 	if (pExternalSemaphoreInfo->handleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TEMP_ZIRCON_EVENT_BIT_FUCHSIA)
 	{
 		pExternalSemaphoreProperties->compatibleHandleTypes = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TEMP_ZIRCON_EVENT_BIT_FUCHSIA;
diff --git a/src/Vulkan/VkSemaphore.cpp b/src/Vulkan/VkSemaphore.cpp
index b495ebb..bb1878f 100644
--- a/src/Vulkan/VkSemaphore.cpp
+++ b/src/Vulkan/VkSemaphore.cpp
@@ -16,9 +16,13 @@
 
 #include "VkConfig.h"
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
-#include "VkSemaphoreExternalLinux.hpp"
-#elif SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
+#  if defined(__linux__) || defined(__ANDROID__)
+#    include "VkSemaphoreExternalLinux.hpp"
+#  else
+#    error "Missing VK_KHR_external_semaphore_fd implementation for this platform!"
+#  endif
+#elif VK_USE_PLATFORM_FUCHSIA
 #include "VkSemaphoreExternalFuchsia.hpp"
 #else
 #include "VkSemaphoreExternalNone.hpp"
@@ -196,7 +200,7 @@
 	impl->signal();
 }
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 VkResult Semaphore::importFd(int fd, bool temporaryImport)
 {
 	std::unique_lock<std::mutex> lock(impl->mutex);
@@ -226,9 +230,9 @@
 	}
 	return impl->external->exportFd(pFd);
 }
-#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 VkResult Semaphore::importHandle(zx_handle_t handle, bool temporaryImport)
 {
 	std::unique_lock<std::mutex> lock(impl->mutex);
@@ -252,6 +256,6 @@
 	}
 	return impl->external->exportHandle(pHandle);
 }
-#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#endif  // VK_USE_PLATFORM_FUCHSIA
 
 }  // namespace vk
diff --git a/src/Vulkan/VkSemaphore.hpp b/src/Vulkan/VkSemaphore.hpp
index c0a8b04..53ad4c2 100644
--- a/src/Vulkan/VkSemaphore.hpp
+++ b/src/Vulkan/VkSemaphore.hpp
@@ -18,7 +18,7 @@
 #include "VkConfig.h"
 #include "VkObject.hpp"
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 #include <zircon/types.h>
 #endif
 
@@ -43,12 +43,12 @@
 
 	void signal();
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 	VkResult importFd(int fd, bool temporaryImport);
 	VkResult exportFd(int* pFd) const;
 #endif
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 	VkResult importHandle(zx_handle_t handle, bool temporaryImport);
 	VkResult exportHandle(zx_handle_t *pHandle) const;
 #endif
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 28ad813..a01f392 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -248,13 +248,13 @@
 	// (from KHR_swapchain v70) to vkBindImageMemory2.
 	{ VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME, 7 },
 #endif
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 	{ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION },
 #endif
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 	{ VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION },
 #endif
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 	{ VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME, VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION },
 #endif
 	{ VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_EXT_PROVOKING_VERTEX_SPEC_VERSION },
@@ -809,7 +809,7 @@
 			// This extension controls on which physical devices the memory gets allocated.
 			// SwiftShader only has a single physical device, so this extension does nothing in this case.
 			break;
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
 		{
 			auto* importInfo = reinterpret_cast<const VkImportMemoryFdInfoKHR *>(allocationInfo);
@@ -830,7 +830,7 @@
 			}
 			break;
 		}
-#endif
+#endif  // SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 		default:
 			WARN("pAllocateInfo->pNext sType = %s", vk::Stringify(allocationInfo->sType).c_str());
 			break;
@@ -864,7 +864,7 @@
 	vk::destroy(memory, pAllocator);
 }
 
-#if SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* getFdInfo, int* pFd)
 {
 	TRACE("(VkDevice device = %p, const VkMemoryGetFdInfoKHR* getFdInfo = %p, int* pFd = %p",
@@ -902,7 +902,7 @@
 
 	return VK_SUCCESS;
 }
-#endif  // SWIFTSHADER_EXTERNAL_MEMORY_LINUX_MEMFD
+#endif  // SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 
 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData)
 {
@@ -1098,7 +1098,7 @@
 	vk::destroy(semaphore, pAllocator);
 }
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd)
 {
 	TRACE("(VkDevice device = %p, const VkSemaphoreGetFdInfoKHR* pGetFdInfo = %p, int* pFd = %p)",
@@ -1125,9 +1125,9 @@
 
 	return vk::Cast(pImportSemaphoreInfo->semaphore)->importFd(pImportSemaphoreInfo->fd, temporaryImport);
 }
-#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_LINUX_MEMFD
+#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_OPAQUE_FD
 
-#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#if VK_USE_PLATFORM_FUCHSIA
 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
 	VkDevice                                        device,
 	const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
@@ -1161,7 +1161,7 @@
 
 	return vk::Cast(pGetZirconHandleInfo->semaphore)->exportHandle(pZirconHandle);
 }
-#endif  // SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#endif  // VK_USE_PLATFORM_FUCHSIA
 
 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent)
 {