Guard Fuchsia extensions.
So we can build for Linux without them.
The vk.xml protect="" are needed because our driver release
doesn't recognize the platform="" guard. A driver update
should fix this.
Test:
pixelbook:go/magma-tps#L1
Change-Id: I3c113b0cc38ed3812660a9836530183fa53a1f54
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 778c8b0..21be114 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -1543,8 +1543,10 @@
const VkImportMemoryFdInfoKHR *fd_info =
vk_find_struct_const(pAllocateInfo->pNext, IMPORT_MEMORY_FD_INFO_KHR);
+#if VK_USE_PLATFORM_MAGMA_KHR
const VkImportMemoryFuchsiaHandleInfoKHR *fuchsia_info =
vk_find_struct_const(pAllocateInfo->pNext, IMPORT_MEMORY_FUCHSIA_HANDLE_INFO_KHR);
+#endif // VK_USE_PLATFORM_MAGMA_KHR
/* The Vulkan spec permits handleType to be 0, in which case the struct is
* ignored.
@@ -1593,6 +1595,8 @@
* If the import fails, we leave the file descriptor open.
*/
close(fd_info->fd);
+
+#if VK_USE_PLATFORM_MAGMA_KHR
} else if (fuchsia_info && fuchsia_info->handleType) {
assert(fuchsia_info->handleType ==
VK_EXTERNAL_MEMORY_HANDLE_TYPE_FUCHSIA_VMO_BIT_KHR);
@@ -1624,6 +1628,8 @@
device, &device->bo_cache, buffer, aligned_alloc_size, &mem->bo);
if (result != VK_SUCCESS)
goto fail;
+#endif // VK_USE_PLATFORM_MAGMA_KHR
+
} else {
result = anv_bo_cache_alloc(device, &device->bo_cache,
pAllocateInfo->allocationSize,
diff --git a/src/intel/vulkan/anv_extensions.py b/src/intel/vulkan/anv_extensions.py
index 9a23c3b..bc43f3c 100755
--- a/src/intel/vulkan/anv_extensions.py
+++ b/src/intel/vulkan/anv_extensions.py
@@ -89,9 +89,9 @@
Extension('VK_KHX_multiview', 1, False),
Extension('VK_EXT_debug_report', 8, True),
Extension('VK_KHR_magma_surface', 1, 'VK_USE_PLATFORM_MAGMA_KHR'),
- Extension('VK_KHR_external_memory_fuchsia', 1, True),
- Extension('VK_KHR_external_semaphore_fuchsia', 1, True),
- Extension('VK_GOOGLE_image_usage_scanout', 1, True),
+ Extension('VK_KHR_external_memory_fuchsia', 1, 'VK_USE_PLATFORM_MAGMA_KHR'),
+ Extension('VK_KHR_external_semaphore_fuchsia', 1, 'VK_USE_PLATFORM_MAGMA_KHR'),
+ Extension('VK_GOOGLE_image_usage_scanout', 1, 'VK_USE_PLATFORM_MAGMA_KHR'),
]
class VkVersion:
@@ -170,7 +170,7 @@
#include "vk_util.h"
/* Convert the VK_USE_PLATFORM_* defines to booleans */
-%for platform in ['ANDROID', 'WAYLAND', 'XCB', 'XLIB']:
+%for platform in ['ANDROID', 'WAYLAND', 'XCB', 'XLIB', 'MAGMA']:
#ifdef VK_USE_PLATFORM_${platform}_KHR
# undef VK_USE_PLATFORM_${platform}_KHR
# define VK_USE_PLATFORM_${platform}_KHR true
diff --git a/src/intel/vulkan/anv_magma.cc b/src/intel/vulkan/anv_magma.cc
index dbf8266..bd5a12f 100644
--- a/src/intel/vulkan/anv_magma.cc
+++ b/src/intel/vulkan/anv_magma.cc
@@ -323,6 +323,7 @@
return 0;
}
+#if VK_USE_PLATFORM_MAGMA_KHR
VkResult anv_GetMemoryFuchsiaHandleKHR(VkDevice vk_device,
const VkMemoryGetFuchsiaHandleInfoKHR* pGetFuchsiaHandleInfo,
uint32_t* pHandle)
@@ -421,6 +422,7 @@
*pFuchsiaHandle = handle;
return VK_SUCCESS;
}
+#endif // VK_USE_PLATFORM_MAGMA_KHR
bool anv_gem_supports_syncobj_wait(int fd) { return true; }
diff --git a/src/vulkan/registry/vk.xml b/src/vulkan/registry/vk.xml
index e1c1339..1326cfc 100644
--- a/src/vulkan/registry/vk.xml
+++ b/src/vulkan/registry/vk.xml
@@ -7707,14 +7707,14 @@
<enum value=""VK_EXT_extension_197"" name="VK_EXT_EXTENSION_197_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_GOOGLE_image_usage_scanout" number="1000" type="instance" contact="Craig Stout @cdotstout" supported="vulkan" platform="magma" author="GOOGLE">
+ <extension name="VK_GOOGLE_image_usage_scanout" number="1000" type="instance" contact="Craig Stout @cdotstout" supported="vulkan" platform="magma" author="GOOGLE" protect="VK_USE_PLATFORM_MAGMA_KHR">
<require>
<enum value="1" name="VK_GOOGLE_IMAGE_USAGE_SCANOUT_SPEC_VERSION"/>
<enum value=""VK_GOOGLE_image_usage_scanout"" name="VK_GOOGLE_IMAGE_USAGE_SCANOUT_EXTENSION_NAME"/>
<enum bitpos="16" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_SCANOUT_BIT_GOOGLE"/>
</require>
</extension>
- <extension name="VK_KHR_external_memory_fuchsia" number="1001" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory" author="KHR" supported="vulkan">
+ <extension name="VK_KHR_external_memory_fuchsia" number="1001" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory" author="KHR" supported="vulkan" protect="VK_USE_PLATFORM_MAGMA_KHR">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_MEMORY_FUCHSIA_SPEC_VERSION"/>
<enum value=""VK_KHR_external_memory_fuchsia"" name="VK_KHR_EXTERNAL_MEMORY_FUCHSIA_EXTENSION_NAME"/>
@@ -7729,7 +7729,7 @@
<command name="vkGetMemoryFuchsiaHandlePropertiesKHR"/>
</require>
</extension>
- <extension name="VK_KHR_external_semaphore_fuchsia" number="1002" type="device" requires="VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore" author="KHR" contact="Craig Stout @cdotstout" supported="vulkan" platform="magma">
+ <extension name="VK_KHR_external_semaphore_fuchsia" number="1002" type="device" requires="VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore" author="KHR" contact="Craig Stout @cdotstout" supported="vulkan" platform="magma" protect="VK_USE_PLATFORM_MAGMA_KHR">
<require>
<enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_FUCHSIA_SPEC_VERSION"/>
<enum value=""VK_KHR_external_semaphore_fuchsia"" name="VK_KHR_EXTERNAL_SEMAPHORE_FUCHSIA_EXTENSION_NAME"/>
@@ -7742,7 +7742,7 @@
<command name="vkGetSemaphoreFuchsiaHandleKHR"/>
</require>
</extension>
- <extension name="VK_KHR_magma_surface" number="1003" type="instance" requires="VK_KHR_surface" platform="magma" contact="Craig Stout @cdotstout" supported="vulkan" author="KHR">
+ <extension name="VK_KHR_magma_surface" number="1003" type="instance" requires="VK_KHR_surface" platform="magma" contact="Craig Stout @cdotstout" supported="vulkan" author="KHR" protect="VK_USE_PLATFORM_MAGMA_KHR">
<require>
<enum value="1" name="VK_KHR_MAGMA_SURFACE_SPEC_VERSION"/>
<enum value=""VK_KHR_magma_surface"" name="VK_KHR_MAGMA_SURFACE_EXTENSION_NAME"/>