[vulkan] Loader - Vulkan ecosystem to v1.2.174
Merge commit '64cc17099c41622646e81d5b46cc537e47361f28' into v1.2.174-jr
Bug:73208
Change-Id: Ia628b99698b4035fc626362a308ca94fe3229bff
diff --git a/BUILD.gn b/BUILD.gn
index 6cfeb30..ee8f0ba 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -16,6 +16,8 @@
import("//build_overrides/build.gni")
import("//build_overrides/vulkan_loader.gni")
+deps = []
+
if (is_fuchsia) {
import("//build/cpp/sdk_shared_library.gni")
import("//build/sdk/sdk_documentation.gni")
@@ -76,7 +78,10 @@
}
if (is_linux) {
# assume secure_getenv() is available
- defines += [ "HAVE_SECURE_GETENV" ]
+ defines += [
+ "HAVE_SECURE_GETENV",
+ "_POSIX_C_SOURCE=200809L",
+ ]
}
}
@@ -149,11 +154,11 @@
if (is_mac) {
frameworks = [ "CoreFoundation.framework" ]
}
- public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
if (build_with_chromium) {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
}
+ public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
configs += [ ":vulkan_internal_config" ]
public_configs = [ ":vulkan_loader_config" ]
configs -= vulkan_undefine_configs
@@ -166,18 +171,15 @@
# which can be obtained separately from the loader implementation itself.
no_headers = true
- deps = [
+ sources += [ "fuchsia/loader_extensions.c" ]
+
+ deps += [
":dlopen_fuchsia",
"//sdk/lib/fdio",
]
runtime_deps = [ "//sdk/lib/fdio:fdio_sdk" ]
}
-
- # Create libvulkan.so.1 on Linux instead of libvulkan.so
- if (is_linux && vulkan_loader_shared) {
- output_extension = "so.1"
- }
}
}
@@ -194,7 +196,7 @@
"fuchsia/dlopen_fuchsia.h",
]
- deps = [
+ deps += [
"//sdk/fidl/fuchsia.vulkan.loader:fuchsia.vulkan.loader_c_client",
"//sdk/lib/fdio",
]
@@ -212,3 +214,7 @@
]
}
}
+
+group("tests") {
+ # TODO(MA-684)
+}
diff --git a/BUILD.md b/BUILD.md
index dd3f641..15ef777 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -686,6 +686,8 @@
Fuchsia uses the project's GN build system to integrate with the Fuchsia platform build.
+<<<<<<< HEAD
+=======
## Building on QNX
QNX is using its own build system. The proper build environment must be set
@@ -695,6 +697,7 @@
Then change working directory to the "build-qnx" in this project and type "make".
It will build the ICD loader for all CPU targets supported by QNX.
+>>>>>>> 64cc17099c41622646e81d5b46cc537e47361f28
### SDK Symbols
The Vulkan Loader is a component of the Fuchsia SDK, so it must explicitly declare its exported symbols in
diff --git a/README.fuchsia b/README.fuchsia
new file mode 100644
index 0000000..df31763
--- /dev/null
+++ b/README.fuchsia
@@ -0,0 +1,8 @@
+Name: Vulkan-Loader
+License: Apache 2.0
+License File: LICENSE.txt
+Upstream Git: https://github.com/KhronosGroup/Vulkan-Loader
+Description:
+
+The Khronos official Vulkan ICD desktop loader.
+
diff --git a/fuchsia/loader_extensions.c b/fuchsia/loader_extensions.c
new file mode 100644
index 0000000..bd1609e
--- /dev/null
+++ b/fuchsia/loader_extensions.c
@@ -0,0 +1,48 @@
+/*
+ *
+ * Copyright (c) 2018 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <lib/fdio/directory.h>
+#include <zircon/device/vfs.h>
+
+#include "loader.h"
+
+typedef VkResult(VKAPI_PTR *PFN_vkOpenInNamespaceAddr)(const char *pName, uint32_t handle);
+typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_vkInitializeOpenInNamespaceCallbackAddr)(PFN_vkOpenInNamespaceAddr);
+
+VKAPI_ATTR static VkResult VKAPI_CALL loader_fdio_open_in_namespace(const char *pName, uint32_t handle) {
+ // fdio_service_connect specifies READ+WRITE, which fails for read-only files
+ zx_status_t status = fdio_open(pName, ZX_FS_RIGHT_READABLE, handle);
+ if (status == ZX_OK) {
+ return VK_SUCCESS;
+ } else {
+ loader_log(NULL, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0, "Failed to open in namespace %s - error %d", pName, status);
+ return VK_ERROR_INITIALIZATION_FAILED;
+ }
+}
+
+void loader_initialize_icd_services(loader_platform_dl_handle handle) {
+ PFN_vkInitializeOpenInNamespaceCallbackAddr fp_initialize_open_in_namespace_callback_addr;
+
+ fp_initialize_open_in_namespace_callback_addr =
+ loader_platform_get_proc_address(handle, "vk_icdInitializeOpenInNamespaceCallback");
+ if (fp_initialize_open_in_namespace_callback_addr) {
+ fp_initialize_open_in_namespace_callback_addr(&loader_fdio_open_in_namespace);
+ // ICD isn't required to expose this entrypoint.
+ return;
+ }
+}
diff --git a/loader/generated/vk_dispatch_table_helper.h b/loader/generated/vk_dispatch_table_helper.h
index 94883e9..7532765 100644
--- a/loader/generated/vk_dispatch_table_helper.h
+++ b/loader/generated/vk_dispatch_table_helper.h
@@ -230,6 +230,9 @@
static VKAPI_ATTR void VKAPI_CALL StubGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData) { };
static VKAPI_ATTR void VKAPI_CALL StubCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) { };
#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubModifyMemoryRangesFUCHSIA(VkDevice device, VkMemoryOpFlagsFUCHSIA op, uint32_t memoryRangeCount, const VkMemoryRangeFUCHSIA* pMemoryRanges, VkMemoryOpResultFUCHSIA* pOpResults) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryZirconHandleFUCHSIA(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle) { return VK_SUCCESS; };
#endif // VK_USE_PLATFORM_FUCHSIA
#ifdef VK_USE_PLATFORM_FUCHSIA
@@ -241,6 +244,30 @@
#ifdef VK_USE_PLATFORM_FUCHSIA
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreZirconHandleFUCHSIA(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle) { return VK_SUCCESS; };
#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubCreateBufferCollectionFUCHSIA(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pImportInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubSetBufferCollectionConstraintsFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageCreateInfo* pImageInfo) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubSetBufferCollectionImageConstraintsFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubSetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR void VKAPI_CALL StubDestroyBufferCollectionFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator) { };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubGetBufferCollectionPropertiesFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubGetBufferCollectionProperties2FUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionProperties2FUCHSIA* pProperties) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+static VKAPI_ATTR VkResult VKAPI_CALL StubTrimCompactImageDeviceMemoryFUCHSIA(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) { return VK_SUCCESS; };
+#endif // VK_USE_PLATFORM_FUCHSIA
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { return VK_SUCCESS; };
static VKAPI_ATTR void VKAPI_CALL StubDestroyAccelerationStructureKHR(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) { };
static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) { };
@@ -804,6 +831,10 @@
table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV) gpa(device, "vkCmdSetFragmentShadingRateEnumNV");
if (table->CmdSetFragmentShadingRateEnumNV == nullptr) { table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)StubCmdSetFragmentShadingRateEnumNV; }
#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->ModifyMemoryRangesFUCHSIA = (PFN_vkModifyMemoryRangesFUCHSIA) gpa(device, "vkModifyMemoryRangesFUCHSIA");
+ if (table->ModifyMemoryRangesFUCHSIA == nullptr) { table->ModifyMemoryRangesFUCHSIA = (PFN_vkModifyMemoryRangesFUCHSIA)StubModifyMemoryRangesFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA) gpa(device, "vkGetMemoryZirconHandleFUCHSIA");
if (table->GetMemoryZirconHandleFUCHSIA == nullptr) { table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)StubGetMemoryZirconHandleFUCHSIA; }
#endif // VK_USE_PLATFORM_FUCHSIA
@@ -819,6 +850,38 @@
table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA) gpa(device, "vkGetSemaphoreZirconHandleFUCHSIA");
if (table->GetSemaphoreZirconHandleFUCHSIA == nullptr) { table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)StubGetSemaphoreZirconHandleFUCHSIA; }
#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA) gpa(device, "vkCreateBufferCollectionFUCHSIA");
+ if (table->CreateBufferCollectionFUCHSIA == nullptr) { table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)StubCreateBufferCollectionFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionConstraintsFUCHSIA = (PFN_vkSetBufferCollectionConstraintsFUCHSIA) gpa(device, "vkSetBufferCollectionConstraintsFUCHSIA");
+ if (table->SetBufferCollectionConstraintsFUCHSIA == nullptr) { table->SetBufferCollectionConstraintsFUCHSIA = (PFN_vkSetBufferCollectionConstraintsFUCHSIA)StubSetBufferCollectionConstraintsFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA) gpa(device, "vkSetBufferCollectionImageConstraintsFUCHSIA");
+ if (table->SetBufferCollectionImageConstraintsFUCHSIA == nullptr) { table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)StubSetBufferCollectionImageConstraintsFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA) gpa(device, "vkSetBufferCollectionBufferConstraintsFUCHSIA");
+ if (table->SetBufferCollectionBufferConstraintsFUCHSIA == nullptr) { table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)StubSetBufferCollectionBufferConstraintsFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA) gpa(device, "vkDestroyBufferCollectionFUCHSIA");
+ if (table->DestroyBufferCollectionFUCHSIA == nullptr) { table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)StubDestroyBufferCollectionFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA) gpa(device, "vkGetBufferCollectionPropertiesFUCHSIA");
+ if (table->GetBufferCollectionPropertiesFUCHSIA == nullptr) { table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)StubGetBufferCollectionPropertiesFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->GetBufferCollectionProperties2FUCHSIA = (PFN_vkGetBufferCollectionProperties2FUCHSIA) gpa(device, "vkGetBufferCollectionProperties2FUCHSIA");
+ if (table->GetBufferCollectionProperties2FUCHSIA == nullptr) { table->GetBufferCollectionProperties2FUCHSIA = (PFN_vkGetBufferCollectionProperties2FUCHSIA)StubGetBufferCollectionProperties2FUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->TrimCompactImageDeviceMemoryFUCHSIA = (PFN_vkTrimCompactImageDeviceMemoryFUCHSIA) gpa(device, "vkTrimCompactImageDeviceMemoryFUCHSIA");
+ if (table->TrimCompactImageDeviceMemoryFUCHSIA == nullptr) { table->TrimCompactImageDeviceMemoryFUCHSIA = (PFN_vkTrimCompactImageDeviceMemoryFUCHSIA)StubTrimCompactImageDeviceMemoryFUCHSIA; }
+#endif // VK_USE_PLATFORM_FUCHSIA
table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR) gpa(device, "vkCreateAccelerationStructureKHR");
if (table->CreateAccelerationStructureKHR == nullptr) { table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)StubCreateAccelerationStructureKHR; }
table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR) gpa(device, "vkDestroyAccelerationStructureKHR");
diff --git a/loader/generated/vk_layer_dispatch_table.h b/loader/generated/vk_layer_dispatch_table.h
index 37ead2f..6bcc9c5 100644
--- a/loader/generated/vk_layer_dispatch_table.h
+++ b/loader/generated/vk_layer_dispatch_table.h
@@ -753,6 +753,11 @@
// ---- VK_NV_fragment_shading_rate_enums extension commands
PFN_vkCmdSetFragmentShadingRateEnumNV CmdSetFragmentShadingRateEnumNV;
+ // ---- VK_FUCHSIA_memory_control extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkModifyMemoryRangesFUCHSIA ModifyMemoryRangesFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_FUCHSIA_external_memory extension commands
#ifdef VK_USE_PLATFORM_FUCHSIA
PFN_vkGetMemoryZirconHandleFUCHSIA GetMemoryZirconHandleFUCHSIA;
@@ -769,6 +774,34 @@
PFN_vkGetSemaphoreZirconHandleFUCHSIA GetSemaphoreZirconHandleFUCHSIA;
#endif // VK_USE_PLATFORM_FUCHSIA
+ // ---- VK_FUCHSIA_buffer_collection extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkCreateBufferCollectionFUCHSIA CreateBufferCollectionFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkSetBufferCollectionConstraintsFUCHSIA SetBufferCollectionConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkSetBufferCollectionImageConstraintsFUCHSIA SetBufferCollectionImageConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA SetBufferCollectionBufferConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkDestroyBufferCollectionFUCHSIA DestroyBufferCollectionFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkGetBufferCollectionPropertiesFUCHSIA GetBufferCollectionPropertiesFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkGetBufferCollectionProperties2FUCHSIA GetBufferCollectionProperties2FUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
+ // ---- VK_FUCHSIA_compact_image extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ PFN_vkTrimCompactImageDeviceMemoryFUCHSIA TrimCompactImageDeviceMemoryFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_KHR_acceleration_structure extension commands
PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR;
PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR;
diff --git a/loader/generated/vk_loader_extensions.c b/loader/generated/vk_loader_extensions.c
index 56cf664..c8dab68 100644
--- a/loader/generated/vk_loader_extensions.c
+++ b/loader/generated/vk_loader_extensions.c
@@ -816,6 +816,11 @@
// ---- VK_NV_fragment_shading_rate_enums extension commands
table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)gdpa(dev, "vkCmdSetFragmentShadingRateEnumNV");
+ // ---- VK_FUCHSIA_memory_control extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->ModifyMemoryRangesFUCHSIA = (PFN_vkModifyMemoryRangesFUCHSIA)gdpa(dev, "vkModifyMemoryRangesFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_FUCHSIA_external_memory extension commands
#ifdef VK_USE_PLATFORM_FUCHSIA
table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandleFUCHSIA");
@@ -832,6 +837,34 @@
table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkGetSemaphoreZirconHandleFUCHSIA");
#endif // VK_USE_PLATFORM_FUCHSIA
+ // ---- VK_FUCHSIA_buffer_collection extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)gdpa(dev, "vkCreateBufferCollectionFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionConstraintsFUCHSIA = (PFN_vkSetBufferCollectionConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionConstraintsFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionImageConstraintsFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionBufferConstraintsFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)gdpa(dev, "vkDestroyBufferCollectionFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)gdpa(dev, "vkGetBufferCollectionPropertiesFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->GetBufferCollectionProperties2FUCHSIA = (PFN_vkGetBufferCollectionProperties2FUCHSIA)gdpa(dev, "vkGetBufferCollectionProperties2FUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+
+ // ---- VK_FUCHSIA_compact_image extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ table->TrimCompactImageDeviceMemoryFUCHSIA = (PFN_vkTrimCompactImageDeviceMemoryFUCHSIA)gdpa(dev, "vkTrimCompactImageDeviceMemoryFUCHSIA");
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_KHR_acceleration_structure extension commands
table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gdpa(dev, "vkCreateAccelerationStructureKHR");
table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)gdpa(dev, "vkDestroyAccelerationStructureKHR");
@@ -1588,6 +1621,11 @@
// ---- VK_NV_fragment_shading_rate_enums extension commands
if (!strcmp(name, "CmdSetFragmentShadingRateEnumNV")) return (void *)table->CmdSetFragmentShadingRateEnumNV;
+ // ---- VK_FUCHSIA_memory_control extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "ModifyMemoryRangesFUCHSIA")) return (void *)table->ModifyMemoryRangesFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_FUCHSIA_external_memory extension commands
#ifdef VK_USE_PLATFORM_FUCHSIA
if (!strcmp(name, "GetMemoryZirconHandleFUCHSIA")) return (void *)table->GetMemoryZirconHandleFUCHSIA;
@@ -1604,6 +1642,34 @@
if (!strcmp(name, "GetSemaphoreZirconHandleFUCHSIA")) return (void *)table->GetSemaphoreZirconHandleFUCHSIA;
#endif // VK_USE_PLATFORM_FUCHSIA
+ // ---- VK_FUCHSIA_buffer_collection extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "CreateBufferCollectionFUCHSIA")) return (void *)table->CreateBufferCollectionFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "SetBufferCollectionConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "SetBufferCollectionImageConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionImageConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "SetBufferCollectionBufferConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionBufferConstraintsFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "DestroyBufferCollectionFUCHSIA")) return (void *)table->DestroyBufferCollectionFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "GetBufferCollectionPropertiesFUCHSIA")) return (void *)table->GetBufferCollectionPropertiesFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "GetBufferCollectionProperties2FUCHSIA")) return (void *)table->GetBufferCollectionProperties2FUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
+ // ---- VK_FUCHSIA_compact_image extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp(name, "TrimCompactImageDeviceMemoryFUCHSIA")) return (void *)table->TrimCompactImageDeviceMemoryFUCHSIA;
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_KHR_acceleration_structure extension commands
if (!strcmp(name, "CreateAccelerationStructureKHR")) return (void *)table->CreateAccelerationStructureKHR;
if (!strcmp(name, "DestroyAccelerationStructureKHR")) return (void *)table->DestroyAccelerationStructureKHR;
@@ -4003,6 +4069,21 @@
#endif // VK_USE_PLATFORM_WIN32_KHR
+// ---- VK_FUCHSIA_memory_control extension trampoline/terminators
+
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL ModifyMemoryRangesFUCHSIA(
+ VkDevice device,
+ VkMemoryOpFlagsFUCHSIA op,
+ uint32_t memoryRangeCount,
+ const VkMemoryRangeFUCHSIA* pMemoryRanges,
+ VkMemoryOpResultFUCHSIA* pOpResults) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->ModifyMemoryRangesFUCHSIA(device, op, memoryRangeCount, pMemoryRanges, pOpResults);
+}
+
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_FUCHSIA_external_memory extension trampoline/terminators
#ifdef VK_USE_PLATFORM_FUCHSIA
@@ -4049,52 +4130,93 @@
#endif // VK_USE_PLATFORM_FUCHSIA
-// ---- VK_QNX_screen_surface extension trampoline/terminators
+// ---- VK_FUCHSIA_buffer_collection extension trampoline/terminators
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
-VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX(
- VkInstance instance,
- const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
+ VkDevice device,
+ const VkBufferCollectionCreateInfoFUCHSIA* pImportInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface) {
-#error("Not implemented. Likely needs to be manually generated!");
- return disp->CreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface);
+ VkBufferCollectionFUCHSIA* pCollection) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->CreateBufferCollectionFUCHSIA(device, pImportInfo, pAllocator, pCollection);
}
-VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateScreenSurfaceQNX(
- VkInstance instance,
- const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface) {
-#error("Not implemented. Likely needs to be manually generated!");
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionConstraintsFUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ const VkImageCreateInfo* pImageInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->SetBufferCollectionConstraintsFUCHSIA(device, collection, pImageInfo);
}
-#endif // VK_USE_PLATFORM_SCREEN_QNX
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
-VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupportQNX(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct _screen_window* window) {
- const VkLayerInstanceDispatchTable *disp;
- VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
- disp = loader_get_instance_layer_dispatch(physicalDevice);
- return disp->GetPhysicalDeviceScreenPresentationSupportQNX(unwrapped_phys_dev, queueFamilyIndex, window);
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->SetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo);
}
-VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceScreenPresentationSupportQNX(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct _screen_window* window) {
- struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
- struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
- if (NULL == icd_term->dispatch.GetPhysicalDeviceScreenPresentationSupportQNX) {
- loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
- "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceScreenPresentationSupportQNX");
- }
- return icd_term->dispatch.GetPhysicalDeviceScreenPresentationSupportQNX(phys_dev_term->phys_dev, queueFamilyIndex, window);
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo);
}
-#endif // VK_USE_PLATFORM_SCREEN_QNX
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ const VkAllocationCallbacks* pAllocator) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ disp->DestroyBufferCollectionFUCHSIA(device, collection, pAllocator);
+}
+
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ VkBufferCollectionPropertiesFUCHSIA* pProperties) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties);
+}
+
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionProperties2FUCHSIA(
+ VkDevice device,
+ VkBufferCollectionFUCHSIA collection,
+ VkBufferCollectionProperties2FUCHSIA* pProperties) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferCollectionProperties2FUCHSIA(device, collection, pProperties);
+}
+
+#endif // VK_USE_PLATFORM_FUCHSIA
+
+// ---- VK_FUCHSIA_compact_image extension trampoline/terminators
+
+#ifdef VK_USE_PLATFORM_FUCHSIA
+VKAPI_ATTR VkResult VKAPI_CALL TrimCompactImageDeviceMemoryFUCHSIA(
+ VkDevice device,
+ VkImage image,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->TrimCompactImageDeviceMemoryFUCHSIA(device, image, memory, memoryOffset);
+}
+
+#endif // VK_USE_PLATFORM_FUCHSIA
// ---- VK_KHR_acceleration_structure extension trampoline/terminators
@@ -5355,6 +5477,14 @@
}
#endif // VK_USE_PLATFORM_WIN32_KHR
+ // ---- VK_FUCHSIA_memory_control extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkModifyMemoryRangesFUCHSIA", name)) {
+ *addr = (void *)ModifyMemoryRangesFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+
// ---- VK_FUCHSIA_external_memory extension commands
#ifdef VK_USE_PLATFORM_FUCHSIA
if (!strcmp("vkGetMemoryZirconHandleFUCHSIA", name)) {
@@ -5383,23 +5513,57 @@
}
#endif // VK_USE_PLATFORM_FUCHSIA
- // ---- VK_QNX_screen_surface extension commands
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
- if (!strcmp("vkCreateScreenSurfaceQNX", name)) {
- *addr = (ptr_instance->enabled_known_extensions.qnx_screen_surface == 1)
- ? (void *)CreateScreenSurfaceQNX
- : NULL;
+ // ---- VK_FUCHSIA_buffer_collection extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkCreateBufferCollectionFUCHSIA", name)) {
+ *addr = (void *)CreateBufferCollectionFUCHSIA;
return true;
}
-#endif // VK_USE_PLATFORM_SCREEN_QNX
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
- if (!strcmp("vkGetPhysicalDeviceScreenPresentationSupportQNX", name)) {
- *addr = (ptr_instance->enabled_known_extensions.qnx_screen_surface == 1)
- ? (void *)GetPhysicalDeviceScreenPresentationSupportQNX
- : NULL;
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkSetBufferCollectionConstraintsFUCHSIA", name)) {
+ *addr = (void *)SetBufferCollectionConstraintsFUCHSIA;
return true;
}
-#endif // VK_USE_PLATFORM_SCREEN_QNX
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkSetBufferCollectionImageConstraintsFUCHSIA", name)) {
+ *addr = (void *)SetBufferCollectionImageConstraintsFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkSetBufferCollectionBufferConstraintsFUCHSIA", name)) {
+ *addr = (void *)SetBufferCollectionBufferConstraintsFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkDestroyBufferCollectionFUCHSIA", name)) {
+ *addr = (void *)DestroyBufferCollectionFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkGetBufferCollectionPropertiesFUCHSIA", name)) {
+ *addr = (void *)GetBufferCollectionPropertiesFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkGetBufferCollectionProperties2FUCHSIA", name)) {
+ *addr = (void *)GetBufferCollectionProperties2FUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
+
+ // ---- VK_FUCHSIA_compact_image extension commands
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ if (!strcmp("vkTrimCompactImageDeviceMemoryFUCHSIA", name)) {
+ *addr = (void *)TrimCompactImageDeviceMemoryFUCHSIA;
+ return true;
+ }
+#endif // VK_USE_PLATFORM_FUCHSIA
// ---- VK_KHR_acceleration_structure extension commands
if (!strcmp("vkCreateAccelerationStructureKHR", name)) {
@@ -5546,12 +5710,6 @@
// ---- VK_EXT_debug_utils extension commands
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) {
ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
-
- // ---- VK_QNX_screen_surface extension commands
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
- } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_QNX_SCREEN_SURFACE_EXTENSION_NAME)) {
- ptr_instance->enabled_known_extensions.qnx_screen_surface = 1;
-#endif // VK_USE_PLATFORM_SCREEN_QNX
}
}
}
diff --git a/loader/generated/vk_loader_extensions.h b/loader/generated/vk_loader_extensions.h
index 62d7ed8..6ba9321 100644
--- a/loader/generated/vk_loader_extensions.h
+++ b/loader/generated/vk_loader_extensions.h
@@ -471,7 +471,6 @@
uint8_t ext_acquire_xlib_display : 1;
uint8_t ext_display_surface_counter : 1;
uint8_t ext_debug_utils : 1;
- uint8_t qnx_screen_surface : 1;
};
uint64_t padding[4];
};
diff --git a/loader/generated/vk_object_types.h b/loader/generated/vk_object_types.h
index 807ff7c..c13d77d 100644
--- a/loader/generated/vk_object_types.h
+++ b/loader/generated/vk_object_types.h
@@ -76,8 +76,9 @@
kVulkanObjectTypePerformanceConfigurationINTEL = 37,
kVulkanObjectTypeIndirectCommandsLayoutNV = 38,
kVulkanObjectTypePrivateDataSlotEXT = 39,
- kVulkanObjectTypeAccelerationStructureKHR = 40,
- kVulkanObjectTypeMax = 41,
+ kVulkanObjectTypeBufferCollectionFUCHSIA = 40,
+ kVulkanObjectTypeAccelerationStructureKHR = 41,
+ kVulkanObjectTypeMax = 42,
// Aliases for backwards compatibilty of "promoted" types
kVulkanObjectTypeDescriptorUpdateTemplateKHR = kVulkanObjectTypeDescriptorUpdateTemplate,
kVulkanObjectTypeSamplerYcbcrConversionKHR = kVulkanObjectTypeSamplerYcbcrConversion,
@@ -125,6 +126,7 @@
"PerformanceConfigurationINTEL",
"IndirectCommandsLayoutNV",
"PrivateDataSlotEXT",
+ "BufferCollectionFUCHSIA",
"AccelerationStructureKHR",
};
@@ -170,6 +172,7 @@
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypePerformanceConfigurationINTEL
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeIndirectCommandsLayoutNV
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypePrivateDataSlotEXT
+ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT, // kVulkanObjectTypeBufferCollectionFUCHSIA
VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, // kVulkanObjectTypeAccelerationStructureKHR
};
@@ -215,6 +218,7 @@
VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, // kVulkanObjectTypePerformanceConfigurationINTEL
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, // kVulkanObjectTypeIndirectCommandsLayoutNV
VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, // kVulkanObjectTypePrivateDataSlotEXT
+ VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA, // kVulkanObjectTypeBufferCollectionFUCHSIA
VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, // kVulkanObjectTypeAccelerationStructureKHR
};
@@ -298,6 +302,8 @@
return VK_OBJECT_TYPE_VALIDATION_CACHE_EXT;
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT) {
return VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV;
+ } else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT) {
+ return VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA;
}
return VK_OBJECT_TYPE_UNKNOWN;
}
@@ -382,6 +388,8 @@
return VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT;
} else if (core_report_obj == VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV) {
return VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT;
+ } else if (core_report_obj == VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA) {
+ return VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT;
}
return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
}
diff --git a/loader/loader.c b/loader/loader.c
index e12b24d..6b87561 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -2303,6 +2303,10 @@
goto out;
}
+#if defined(__Fuchsia__)
+ loader_initialize_icd_services(handle);
+#endif
+
// Get and settle on an ICD interface version
fp_negotiate_icd_version = loader_platform_get_proc_address(handle, "vk_icdNegotiateLoaderICDInterfaceVersion");
@@ -7086,7 +7090,6 @@
VkResult ReadSortedPhysicalDevices(struct loader_instance *inst, struct LoaderSortedPhysicalDevice **sorted_devices, uint32_t* sorted_count)
{
VkResult res = VK_SUCCESS;
-
#if defined(_WIN32)
uint32_t sorted_alloc = 0;
struct loader_icd_term *icd_term = NULL;
diff --git a/loader/loader.h b/loader/loader.h
index 2182f18..116484e 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -338,6 +338,9 @@
#ifdef VK_USE_PLATFORM_IOS_MVK
bool wsi_ios_surface_enabled;
#endif
+#ifdef VK_USE_PLATFORM_FUCHSIA
+ bool wsi_imagepipe_surface_enabled;
+#endif
#ifdef VK_USE_PLATFORM_GGP
bool wsi_ggp_surface_enabled;
#endif
@@ -345,9 +348,6 @@
#if defined(VK_USE_PLATFORM_METAL_EXT)
bool wsi_metal_surface_enabled;
#endif
-#ifdef VK_USE_PLATFORM_FUCHSIA
- bool wsi_imagepipe_surface_enabled;
-#endif
#ifdef VK_USE_PLATFORM_SCREEN_QNX
bool wsi_screen_surface_enabled;
#endif
@@ -547,4 +547,8 @@
VkStringErrorFlags vk_string_validate(const int max_length, const char *char_array);
+#if defined(__Fuchsia__)
+void loader_initialize_icd_services(loader_platform_dl_handle handle);
+#endif
+
#endif // LOADER_H
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index 437b3c3..5d5f9b1 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -51,6 +51,8 @@
#include <stdbool.h>
#include <stdlib.h>
#include <libgen.h>
+#include <stdio.h>
+#include <unistd.h>
// VK Library Filenames, Paths, etc.:
#define PATH_SEPARATOR ':'
@@ -122,7 +124,7 @@
buffer[ret] = '\0';
return buffer;
}
-#elif defined(__Fuchsia__)
+#elif defined(__Fuchsia__) // defined(__APPLE__)
static inline char *loader_platform_executable_path(char *buffer, size_t size) { return NULL; }
#elif defined(__QNXNTO__)
diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py
index 421dc84..ab2f6e6 100644
--- a/scripts/loader_extension_generator.py
+++ b/scripts/loader_extension_generator.py
@@ -44,6 +44,7 @@
'VK_KHR_swapchain',
'VK_KHR_display_swapchain',
'VK_KHR_get_display_properties2',
+ 'VK_FUCHSIA_imagepipe_surface',
'VK_KHR_get_surface_capabilities2',
'VK_QNX_screen_surface']