successfully allocating with VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT working copying vulkan texture successfully passing D3D texture back to Flutter chore: Dart/Windows sample project: remove unnnecessary InvalidateRect from update() chore: Dart/Windows sample project: add generated bindings successfully blitting from Vulkan swapchain to D3D texture working Vulkan texture integration with Flutter refactor to allow disposal of resources in destructors handle destroyTexture correctly correctly implement surface resizing/destruction move Windows engine to Vulkan backend and flush after creating swapchain add vulkan + vkshaders to Windows libs update materials with Vulkan move Vulkan implementation to thermion_Dart remove extras folder thermion_flutter plugin updates update build hook to copy .lib file to output directory and use -vulkan lib zip file thermion_flutter cleanup reinstate stereoscopic on Windows add dxgi and d3d11.lib to windows header pragma update cli_windows sample project copy filament/vulkan headers to output directory. This was originally added to facilitate linking on Windows (where thermion_flutter_plugin.cpp needs the Vulkan-related headers), but this doesn't actually solve the problem because there's no way that I've found to get the directory structure correct in the Dart native_assets build directory unless you explicitly address each inidivual file. The current approach is therefore to just keep a permanent copy of the headers in the thermion_filament directory (meaning these will need to be updated manually if the Filament version changes). However, I decided to keep the changes to build.dart because it doesn't have much negative impact and may be helpful in future. disable stereoscopic on Windows and disable handle use after free checks use filament headers for thermion_flutter throw Exception for MSAA on Windows (note that passing msaa:true for setAntiAliasing doesn't actually set MSAA on other platforms, but at least it won't cause the engine to crash) change header include path for Windows/Vulkan change header include path for Windows/Vulkan add filament/vulkan headers for flutter (Windows) ensure destroyTexture platform methods accept an integer rather than a list handle Android/Windows swapchain creation separately
259 lines
12 KiB
C
259 lines
12 KiB
C
#ifndef VULKAN_FUCHSIA_H_
|
|
#define VULKAN_FUCHSIA_H_ 1
|
|
|
|
/*
|
|
** Copyright 2015-2022 The Khronos Group Inc.
|
|
**
|
|
** SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/*
|
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
|
**
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
#define VK_FUCHSIA_imagepipe_surface 1
|
|
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
|
|
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
|
|
typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
|
|
typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkImagePipeSurfaceCreateFlagsFUCHSIA flags;
|
|
zx_handle_t imagePipeHandle;
|
|
} VkImagePipeSurfaceCreateInfoFUCHSIA;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
|
|
VkInstance instance,
|
|
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface);
|
|
#endif
|
|
|
|
|
|
#define VK_FUCHSIA_external_memory 1
|
|
#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
|
|
#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
|
|
typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
|
zx_handle_t handle;
|
|
} VkImportMemoryZirconHandleInfoFUCHSIA;
|
|
|
|
typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t memoryTypeBits;
|
|
} VkMemoryZirconHandlePropertiesFUCHSIA;
|
|
|
|
typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkDeviceMemory memory;
|
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
|
} VkMemoryGetZirconHandleInfoFUCHSIA;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
zx_handle_t zirconHandle,
|
|
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
|
#endif
|
|
|
|
|
|
#define VK_FUCHSIA_external_semaphore 1
|
|
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
|
|
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
|
|
typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSemaphore semaphore;
|
|
VkSemaphoreImportFlags flags;
|
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
|
zx_handle_t zirconHandle;
|
|
} VkImportSemaphoreZirconHandleInfoFUCHSIA;
|
|
|
|
typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSemaphore semaphore;
|
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
|
} VkSemaphoreGetZirconHandleInfoFUCHSIA;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle);
|
|
#endif
|
|
|
|
|
|
#define VK_FUCHSIA_buffer_collection 1
|
|
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)
|
|
#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2
|
|
#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection"
|
|
typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
|
|
|
|
typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA {
|
|
VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,
|
|
VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,
|
|
VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,
|
|
VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,
|
|
VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,
|
|
VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
|
|
} VkImageConstraintsInfoFlagBitsFUCHSIA;
|
|
typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
|
|
typedef struct VkBufferCollectionCreateInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
zx_handle_t collectionToken;
|
|
} VkBufferCollectionCreateInfoFUCHSIA;
|
|
|
|
typedef struct VkImportMemoryBufferCollectionFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkBufferCollectionFUCHSIA collection;
|
|
uint32_t index;
|
|
} VkImportMemoryBufferCollectionFUCHSIA;
|
|
|
|
typedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkBufferCollectionFUCHSIA collection;
|
|
uint32_t index;
|
|
} VkBufferCollectionImageCreateInfoFUCHSIA;
|
|
|
|
typedef struct VkBufferCollectionConstraintsInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t minBufferCount;
|
|
uint32_t maxBufferCount;
|
|
uint32_t minBufferCountForCamping;
|
|
uint32_t minBufferCountForDedicatedSlack;
|
|
uint32_t minBufferCountForSharedSlack;
|
|
} VkBufferCollectionConstraintsInfoFUCHSIA;
|
|
|
|
typedef struct VkBufferConstraintsInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkBufferCreateInfo createInfo;
|
|
VkFormatFeatureFlags requiredFormatFeatures;
|
|
VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
|
|
} VkBufferConstraintsInfoFUCHSIA;
|
|
|
|
typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkBufferCollectionFUCHSIA collection;
|
|
uint32_t index;
|
|
} VkBufferCollectionBufferCreateInfoFUCHSIA;
|
|
|
|
typedef struct VkSysmemColorSpaceFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t colorSpace;
|
|
} VkSysmemColorSpaceFUCHSIA;
|
|
|
|
typedef struct VkBufferCollectionPropertiesFUCHSIA {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t memoryTypeBits;
|
|
uint32_t bufferCount;
|
|
uint32_t createInfoIndex;
|
|
uint64_t sysmemPixelFormat;
|
|
VkFormatFeatureFlags formatFeatures;
|
|
VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex;
|
|
VkComponentMapping samplerYcbcrConversionComponents;
|
|
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
|
VkSamplerYcbcrRange suggestedYcbcrRange;
|
|
VkChromaLocation suggestedXChromaOffset;
|
|
VkChromaLocation suggestedYChromaOffset;
|
|
} VkBufferCollectionPropertiesFUCHSIA;
|
|
|
|
typedef struct VkImageFormatConstraintsInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkImageCreateInfo imageCreateInfo;
|
|
VkFormatFeatureFlags requiredFormatFeatures;
|
|
VkImageFormatConstraintsFlagsFUCHSIA flags;
|
|
uint64_t sysmemPixelFormat;
|
|
uint32_t colorSpaceCount;
|
|
const VkSysmemColorSpaceFUCHSIA* pColorSpaces;
|
|
} VkImageFormatConstraintsInfoFUCHSIA;
|
|
|
|
typedef struct VkImageConstraintsInfoFUCHSIA {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t formatConstraintsCount;
|
|
const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints;
|
|
VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
|
|
VkImageConstraintsInfoFlagsFUCHSIA flags;
|
|
} VkImageConstraintsInfoFUCHSIA;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
|
|
typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkBufferCollectionFUCHSIA* pCollection);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
|
|
|
|
VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkAllocationCallbacks* pAllocator);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
VkBufferCollectionPropertiesFUCHSIA* pProperties);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|